安装allure-pytest
allure-pytest
是python
的一个第三方库。用于连接pytest
和allure
,使它们可以配合在一起使用。allure-pytest
基于pytest
的原始执行结果生成适用于allure
的json
格式结果。该json格式结果可以用于后续适用allure
生成html
结果。
命令行或者终端中输入 pip install allure-pytest 即可进行安装:
1 $ pip install allure-pytest
allure安装可参考定制化报告插件allure2安装 。
实例
基于pytest写个测试文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 def func (x ): return x + 3 def test_func_0 (): src = 0 expect = 3 assert func(src) == expect def test_func_1 (): src = 0.1 expect = 3.1 assert func(src) == expect def test_func_2 (): src = -1 expect = 0 assert func(src) == expect
运行pytest和allure生成报告
打开终端terminal,切到测试文件所在目录。假设文件名为test_demo.py。
生成json格式运行结果 运行命令 pytest –alluredir=report test_demo.py 。 命令中的 –alluredir=report 指明了生成的json结果文件存放的目录为当前目录下的report文件夹 命令的运行结果如下图所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 E:\Python\httpRunnerDemo>pytest --alluredir =report testcases/test_user_login.py ============================================================================================ test session starts ============================================================================================ platform win32 -- Python 3.8 .2 , pytest-6 .1.2 , py-1 .9.0 , pluggy-0 .13.1 rootdir: E:\Python\httpRunnerDemo plugins: allure-pytest -2 .8.19 , asyncio-0 .14.0 , cov-2 .10.1 , html-2 .1.1 , metadata-1 .10.0 collected 3 items testcases\test_user_login.py ..F [100 %] ================================================================================================= FAILURES ================================================================================================== ________________________________________________________________________________________________ test_func_2 ________________________________________________________________________________________________ def test_func_2(): src = -1 expect = 0 > assert func(src) == expect E assert 2 == 0 E + where 2 = func(-1 ) testcases\test_user_login.py:20 : AssertionError ========================================================================================== short test summary info ========================================================================================== FAILED testcases/test_user_login.py::test_func_2 - assert 2 == 0 ======================================================================================== 1 failed, 2 passed in 0.19 s ========================================================================================
基于pytest捕捉到的测试用例,每个用例的执行结果会生成一个json文件。如下图所示:
使用allure生成最终的测试报告 运行命令 allure generate report。 这个命令会将 report 文件夹下的json文件渲染成网页结果,方便观看。生成的网页结果默认保存在当前文件夹下的 allure-report 文件夹内:
1 2 E:\Python\httpRunnerDemo>allure generate report Report successfully generated to allure-report
--clean
表示清除上一次生成的报告内容。
生成结果如下图所示:
如果直接在文件夹中直接打开index.html,是看不到实际内容的,这是因为实际内容需要 allure 进行渲染后才能看到。
可使用pycharm 直接打开index.html,即可看到美观的测试报告:
或者使用allure内置的命令。allure使用了两种方式来渲染页面。分别是allure open 和 allure serve。前者用于在本地渲染和查看结果,后者用于在本地渲染后对外展示结果。这里我们使用allure open。运行命令 allure open allure-report即可自动打开浏览器展示渲染好的结果。
1 2 3 4 E:\Python\httpRunnerDemo>allure open allure-report Starting web server... 2020 -11 -03 14 :10 :44.604 :INFO::main: Logging initialized @605 ms to org.eclipse.jetty.util.log.StdErrLogServer started at <http:// 172.17 .23.67 :57098 />. Press <Ctrl+C> to exit