使用pyqt6搭建测试系统1:pytest+allure

45 阅读1分钟

pytest + allure 生成测试报告

  • 安装 pip install pytest alluse-pytest

  • 下载与安装allure

    • 首先安装java环境(allure是需要java的),装个java8就行了
    • 再下载allure并解压放到环境变量中
    • 测试allure是否配置成功: allure --version
  • pytest + allure

    • 先编写一个test.py

      def test_xp():
          print("xp")
      
    • 在通过命令行: pytest test.py --alluredir=./results 或者代码生成 results目录

      import pytest
      pytest.main(["test.py", "--alluredir=./results"])
      
    • 使用 allure serve -p 8888 results 来运行测试报告服务,运行后会自动打开浏览器并访问 http://127.0.0.1:8888

      • image.png

pyqt6 + pytest + allure + webengineview

  • 安装 pip install pyqt6 pyqt6-tools pyqt6-webengine

    • python需要安装3.9以及以下版本,否则pyqt6-tools安装不成功
  • 安装好后需要配置两个外部工具:designer and uic

    • image.png

    • image.png

  • 使用designer先编写一个界面:hello.ui

    • image.png
  • 并用uic将 hello.ui 转换成 hello.py

    • 在pycharm中选中hello.ui并选择执行uic即可
  • 在主程序中运行此界面

    import sys
    import hello
    from PyQt6.QtWidgets import QApplication, QWidget
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        win = QWidget()
        form = hello.Ui_Form()
        form.setupUi(win)
        win.show()
        app.exec()
    
  • 接下来就需要添加两个按钮的信号槽函数

    def on_start_test_click():
        print("start test")
        pytest.main(["test.py", "--alluredir=./results"])
        subprocess.Popen([r"D:\softwares\tools\allure-2.35.1\bin\allure.bat", "serve", "-p", "8888", "./results"])
    
    def on_show_result_click(parent):
        layout = QVBoxLayout(parent)
        view = QWebEngineView(parent)
        view.setUrl(QUrl("http://127.0.0.1:8888"))
        layout.addWidget(view)
        parent.setLayout(layout)
        view.show()
    
  • 接下来就可以运行查看效果了

    • image.png

附录

完整代码

import sys
import hello
import pytest
import subprocess
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt6.QtWebEngineWidgets import QWebEngineView
from PyQt6.QtCore import  QUrl

def on_start_test_click():
    print("start test")
    pytest.main(["test.py", "--alluredir=./results"])
    subprocess.Popen([r"D:\softwares\tools\allure-2.35.1\bin\allure.bat", "serve", "-p", "8888", "./results"])

def on_show_result_click(parent):
    layout = QVBoxLayout(parent)
    view = QWebEngineView(parent)
    view.setUrl(QUrl("http://127.0.0.1:8888"))
    layout.addWidget(view)
    parent.setLayout(layout)
    view.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = QWidget()
    form = hello.Ui_Form()
    form.setupUi(win)
    form.startTestBtn.clicked.connect(on_start_test_click)
    form.showResultBtn.clicked.connect(lambda: on_show_result_click(form.resultContainer))
    win.show()
    app.exec()