Python&Selenium&pytest藉助allure生成自動化測試報告
一、摘要
本篇博文將介紹Python和Selenium進行自動化測試時,如何藉助allure生成自動化測試報告
二、環境配置
首先python環境中安裝pytest和pytest_allure_adaptor模組,命令如下
pip install pytest pip install pytest_allure_adaptor
三、執行測試
pytest -s -q --alluredir [path_to_report_dir]
[path_to_report_dir]:為執行測試後生成測試結果的路徑,是個自定義路徑
測試完成後,在命令中指定的[path_to_report_dir]的自定義路徑下,會生成類似如下xml檔案
檔名為(自動生成):95060033-2085-40bb-b85a-64e43dc1d04b-testsuite.xml
<ns0:test-suite xmlns:ns0="urn:model.allure.qatools.yandex.ru" start="1544418468984" stop="1544418469065"> <name>TestScripts</name> <labels/> <test-cases> <test-case start="1544418468984" status="passed" stop="1544418468987"> <name>test_asserts.test_add</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps> <step start="1544418468987" status="passed" stop="1544418468987"> <name>test_add</name> <title>test_add</title> <attachments/> <steps/> </step> </steps> </test-case> <test-case start="1544418468990" status="passed" stop="1544418468991"> <name>test_asserts.test_add2</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps> <step start="1544418468991" status="passed" stop="1544418468991"> <name>test_add2</name> <title>test_add2</title> <attachments/> <steps/> </step> </steps> </test-case> <test-case start="1544418468992" status="passed" stop="1544418468993"> <name>test_asserts.test_add3</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps> <step start="1544418468993" status="passed" stop="1544418468993"> <name>test_add3</name> <title>test_add3</title> <attachments/> <steps/> </step> </steps> </test-case> <test-case start="1544418468994" status="failed" stop="1544418469045"> <name>test_asserts.test_add4</name> <failure> <message>AssertionError: assert 39 >= 50 +where 39 = add(17, 22)</message> <stack-trace>def test_add4(): >assert add(17,22) >= 50 Eassert 39 >= 50 E+where 39 = add(17, 22) test_asserts.py:34: AssertionError</stack-trace> </failure> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> <test-case start="1544418469046" status="passed" stop="1544418469047"> <name>test_asserts.test_in</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> <test-case start="1544418469048" status="passed" stop="1544418469049"> <name>test_asserts.test_not_in</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> <test-case start="1544418469050" status="failed" stop="1544418469054"> <name>test_asserts.test_true</name> <failure> <message>AssertionError: assert not True +where True = is_prime(7)</message> <stack-trace>def test_true(): >assert not is_prime(7) Eassert not True E+where True = is_prime(7) test_asserts.py:65: AssertionError</stack-trace> </failure> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> <test-case start="1544418469055" status="passed" stop="1544418469057"> <name>test_fixture1.test_numbers_3_4</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> <test-case start="1544418469058" status="passed" stop="1544418469059"> <name>test_fixture1.test_strings_a_3</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> <test-case start="1544418469060" status="passed" stop="1544418469062"> <name>test_fixture2.TestUM.test_numbers_5_6</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> <test-case start="1544418469064" status="passed" stop="1544418469065"> <name>test_fixture2.TestUM.test_strings_b_2</name> <attachments/> <labels> <label name="severity" value="normal"/> <label name="thread" value="9944-MainThread"/> <label name="host" value="DESKTOP-BE70S9D"/> <label name="framework" value="pytest"/> <label name="language" value="cpython3"/> </labels> <steps/> </test-case> </test-cases> </ns0:test-suite>
四、使用allure-commandline將xml製作成html報告
下載地址為:
https://github.com/allure-framework/allure2/releases
https://github.com/allure-framework/allure1/releases
解壓到allure-commandline目錄
進入bin目錄,執行allure.bat
新增allure到環境變數PATH(\安裝路徑\allure-commandline\bin)
執行命令:
allure generate directory-with-results/ -o directory-with-report
[directory-with-results]: 為第三部中的路徑,第三步中已經指定
[directory-with-report]: 自定義html生成到哪個路徑下,如下圖所示
五、檢視報告
六、報告樣式
還可以切換語言