pytest + allure 生成测试报告
-
安装
pip install pytest alluse-pytest -
下载与安装allure
-
pytest + allure
-
先编写一个
test.pydef 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
-
pyqt6 + pytest + allure + webengineview
-
安装
pip install pyqt6 pyqt6-tools pyqt6-webengine- python需要安装3.9以及以下版本,否则
pyqt6-tools安装不成功
- python需要安装3.9以及以下版本,否则
-
安装好后需要配置两个外部工具:
designeranduic -
-
使用designer先编写一个界面:
hello.ui -
并用uic将
hello.ui转换成hello.py- 在pycharm中选中
hello.ui并选择执行uic即可
- 在pycharm中选中
-
在主程序中运行此界面
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() -
接下来就可以运行查看效果了
附录
完整代码
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()