Python 生成测试报告
HTMLTestRunner 模块时python三方的生成测试报告的模块,他可以将python unittest模块测试的结果编写成一个html报告。Htmltestrunner 只支持python2 ,python3如果进行使用,需要手动修改源码。
下载HTMLTestrunner,
https://pypi.org/project/HTMLTestRunner/
由于此模块基于测试人员开发,可能没有那么周到,(可能有点搞笑)不能够直接下载安装包或源码文件,我们需要基于网页复制其源码,并在python目录第三方安装包目录创建一个HTMLTestRunner.py的文件,将其代码复制其中,并修改
按照python3 修改源码
1、94行将import stringIO 改为 import io
2、539行 将stringio改为io
3、642行 将has_key 改为not in
4、766行 将decode改为encode,如果后期报错,建议改为utf-8
5、772行 将decode改为encode,如果后期报错,建议改为utf-8
6、631行 修改print格式
7、784 都添加str
上测试代码,进行测试报告生成:
import unittest
from time import sleep
from selenium import webdriver
from HTMLTestRunner import HTMLTestRunner
class Tongcheng58(unittest.TestCase):
def setUp(self):
self.chrome = webdriver.Chrome()
self.chrome.get("https://passport.58.com/login/")
def login(self,username,password):
user_pass = self.chrome.find_element_by_class_name("qrcode")
user_pass.click()
username_u1 = self.chrome.find_element_by_id("username")
password_u1 = self.chrome.find_element_by_id("password")
button = self.chrome.find_element_by_id("btn_account")
username_u1.send_keys(username)
password_u1.send_keys(password)
button.click()
text = self.chrome.find_element_by_class_name("password_msgtext").text
return text
def test_login_one(self):
text = self.login("13371054432","123")
self.assertEqual("密码太短,最少6位",text,"密码太短,提示内容有误")
def test_login_two(self):
text = self.login("13371054432","123456")
self.assertEqual("该用户不存在",text,"账户有误,提示内容有误")
def tearDown(self):
sleep(10)
self.chrome.close()
if __name__ == '__main__':
# unittest.main()
# 使用HTMLTestRunner进行测试
suite = unittest.TestSuite()#多个测试用例使用测试套件
suite.addTest(Tongcheng58("test_login_one"))#添加用例1
suite.addTest(Tongcheng58("test_login_two"))#添加用例2
with open("report.html","wb") as f:
runner = HTMLTestRunner(
stream=f,#文件
title="58登录测试",#标题
description="简单的账户登录自动化测试"#描述
)
runner.run(suite)#启动测试套件
切记这里不能以unittest的方式运行改脚本,必须以普通文件run
实在不行,在cmd或python终端运行该脚本
测试结果展示: