项目中有份API测试的代码的结构大致如下
/api_test
– test_device_api01_via_lan.py
– test_device_api02_via_lan.py
– test_device_api03_via_lan.py
– test_device_api01_via_wan.py
– test_device_api02_via_wan.py
– test_device_api03_via_wan.py
很容易猜到其实这里是重复的2份代码,只是因为执行测试的时候,有一份是通过lan测试,另一份是通过wan测试。每次修改代码,还需要把修改同步到相应的lan或者wan的代码上去……
但是又不能简单的做个循环,把lan/wan的地址丢进去当参数,因为项目目前运行是需要收集JUnit格式的测试报告的,优化代码后,还需要拿到和之前一样或者差不多的报告,好显示在Jenkins上。
今天实在不能忍了,花点时间研究了下,有如下解决办法。
项目根目录上新建一个conftest.py,内容如下
def pytest_generate_tests(metafunc):
idlist = []
argvalues = []
for scenario