一个与pytest一起使用的简单插件
pytest-diff的Python项目详细描述
一个与pytest一起使用的简单插件
这个pytest插件是用Cookiecutter和@hackebrot的cookiecutter-pytest-plugin模板生成的。
功能
- 失败测试的可读差异
- 为您的课程定制差异
要求
- pytest
- 深度差异
- pprintpp
用法
classPerson:def__init__(self,name,age,favorites):self.name=nameself.age=ageself.favorites=favoritesdeftest_person():a=Person("Alice",age=21,favorites={"food":"spam","movie":"Life of Brian"})b=Person("Alice",age=21,favorites={"food":"eggs","movie":"Life of Brian"})asserta==b
运行pytest
给出:
______________________________test_person______________________________deftest_person():a=Person("Alice",age=21,favorites={'food':'spam','movie':'Life of Brian'})b=Person("Alice",age=21,favorites={'food':'eggs','movie':'Life of Brian'})>asserta==bEassertE<test_person.Personobjectat0x7fa326d769e8>E==E<test_person.Personobjectat0x7fa326d76be0>E{'values_changed':{"root.favorites['food']":{'new_value':'spam','old_value':'eggs'}}}examples/test_person.py:11:AssertionError
要为特定类型自定义diff,请在注册表中注册:
importpytest_diffclassCar:def__init__(self,make,model,year):self.make=makeself.model=modelself.year=year@pytest_diff.registry.register(Car)defdiff(x,y):return[f"{x.make} vs {y.make}",f"{x.model} vs {y.model}",f"{x.year} vs {y.year}",]deftest_car():c1=Car("Toyota","Prius",2010)c2=Car("Honda","Accord",2009)assertc1==c2
然后运行pytest
显示您的自定义差异:
deftest_car():c1=Car("Toyota","Prius",2010)c2=Car("Honda","Accord",2009)>assertc1==c2EassertE<test_custom.Carobjectat0x7f0e9b0ccd68>E==E<test_custom.Carobjectat0x7f0e9b0cceb8>EToyotavsHondaEPriusvsAccordE2010vs2009examples/test_custom.py:21:AssertionError
贡献
我们非常欢迎您的贡献。测试可以用tox运行,请确保 在提交请求之前,覆盖范围至少保持不变。
许可证
“pytest diff”是根据MIT许可证的条款发布的免费开源软件
问题
如果您遇到任何问题,请file an issue连同详细说明。