在之前的文章里面我们提到了allure测试报告的查看有两种方式:
一种是将allure报告的json文件存在temp目录下,直接通过打开temp目录下allure报告的json文件,来查看allure报告
另一种是将allure报告的json文件存在temp目录下,然后将temp目录下allure报告的json文件生成allure报告的html文件,再通过打开allure报告的html文件来查看报告
具体的实现方式可以参看之前的文章:http://t.csdnimg.cn/Ghz8L
在最近生成查看测试报告时,我发现不管用哪种方式,都会存在一个问题,那就是测试报告执行用例的数量显示的有问题,例如我第一次执行时执行了两条测试用例,查看测试报告的时候就会显示数量为2,但是当我只执行一条测试用例的时候,我去查看测试报告,还是会显示数量为2。
思考之后我发现:我们在第一种方式查看测试报告的时候,并没有将temp目录的历史文件删除,而在第二种方式查看测试报告的时候,虽然删除了report目录之前的测试报告,但是temp目录下的历史文件仍然没有删除,也就是说无论那种方式,temp目录始终保存着之前报告的历史文件,这样就会导致无论我们使用哪种方式查看测试报告,测试报告都会还有历史文件的数据,这就会导致测试报告的数据显示不正确。
对于这种情况我在生成测试报告时增加了以下的一些代码逻辑:
import os
import pytest
import shutil
# 创建temp目录,如果存在则不创建
os.makedirs('./temp', exist_ok=True)
# 删除temp目录
# 执行pytest,输出运行配置及调试信息,将allure报告json文件存放在temp目录下,temp目录不存在则创建
shutil.rmtree('./temp')
pytest.main(['cs.py', '-sv', '--alluredir', './temp'])
# 将temp目录下的json文件输出报告到report目录,report目录不存在则创建
# --clean命令清除report目录下上一次生成的报告
os.system('allure generate ./temp -o ./report --clean')
# 打开report目录下的测试报告
os.system('allure open ./report')
我们可以使用 shutil.rmtree('./temp') 来删除temp目录,这样在执行用例时会自动再生成temp目录这样就可以保证temp目录下每次都是当前测试报告的json文件
另外当我们再第一次执行测试用例时,由于此时还没有temp目录还没有创建,执行 shutil.rmtree('./temp') 时会报错,我们可以手动创建一个temp目录,当然也可以选择使用 os.makedirs('./temp', exist_ok=True) 来创建temp目录,该方法可以判断temp目录是否存在,存在则忽略,不存在则创建temp目录
到此,我们便可以实现查看allure测试报告时每次都是最新一次测试用例执行的结果