300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > pytest和allure生成测试报告

pytest和allure生成测试报告

时间:2024-04-03 21:02:58

相关推荐

pytest和allure生成测试报告

文章目录

pytest简介pytest和unittest区别pytest使用自带的python-html 生成测试报告 由于自带生成测试报告的东西不是界面过于简单和不太美观可以使用allure使用之前得要allure的环境变量(选择allure-2.13.2\bin)python需下载allure_pytestAllure常用的几个特性 读取文件(和unittest是一样的,拿到数据后就可以进行操作)读取xml文件读取csv文件

pytest简介

pytest命名规则

使用pytest之前需要安装一下pytest : pip install pytest

类名必须以Test开头,必须是大写开头,也可以_test()结尾,类中的方法也必须以test开头,执行时值匹配以app开头的类和方法

pytest和unittest区别

共同点:

他们都有共同的方法setup(), teardown(), setupclass(), teardownclass()

执行顺序 setupclass() -> setup() ->teardown() -> teardownclass()

区别:

import pytestclass TestClass:def test01(self):pass

pytest使用自带的python-html 生成测试报告

生成测试报告之前需要安装pytest-html: pip install pytest-html

import pytestclass TestClass():def setUp(self):print('setUp')def test01(self):print('test01')@pytest.mark.skip() # 跳过该用例(函数)def test02(self):print('test02')def tearDown(self):print('tearDown')if __name__ == '__main__':# 运行指定模块下,运行所有test开头的类和测试用例# -x出现一条测试用例失败就退出测试# -s:显示print内容pytest.main(['--html=./huuu_test/report.html','ohh.py','-s'])

结果:

补充

. 点号,表示用例通过

F 表示失败 Failure

E 表示用例中存在异常 Error

由于自带生成测试报告的东西不是界面过于简单和不太美观可以使用allure

allure是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成。

使用之前得要allure的环境变量(选择allure-2.13.2\bin)python需下载allure_pytest

pip install allure_pytest

使用前要下载的文件

链接:/s/1ndOyEHi_TQPQld8YLZgsjw

提取码:88ff

出现这个情况就是配置成功

Allure常用的几个特性

@allure.feature # 用于描述被测试产品需求@allure.story # 用于描述feature的用户场景,即测试需求with allure.step(): # 用于描述测试步骤,将会输出到报告中allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些

demo

import osimport pytestimport allureclass TestClass005():@allure.feature("登录") # 用于定义被测试的功能,被测产品的需求点@allure.story("汽车系统") # 用于定义被测功能的用户场景,即子功能点def test_login(self):assert 1 == 1@allure.feature("汽车") # 用于定义被测试的功能,被测产品的需求点@allure.story("买入汽车") # 用于定义被测功能的用户场景,即子功能点def test_cat(self):with allure.step("查看红旗系列车信息"):allure.attach('H8', '红旗')allure.attach('带话筒', '红旗')with allure.step("查看大众系列车信息"):allure.attach("带字母", '大众')allure.attach("w9", '大众', )if __name__ == '__main__':pytest.main(['--alluredir', 'report/result', 'huuu_test.py']) # 生成json类型的测试报告split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean' # 将测试报告转为html格式os.system(split) # system函数可以将字符串转化成命令在服务器上运行

读取文件(和unittest是一样的,拿到数据后就可以进行操作)

读取xml文件

class Readxml():def read_xml(self, filename, onename, twoname):root = minidom.parse(filename)firstnode = root.getElementsByTagName(onename)[0]secondnode = firstnode.getElementsByTagName(twoname)[0].firstChild.datareturn secondnoder = Readxml()a = r.read_xml('../data/add.xml', 'k1', 'k2')b = r.read_xml('../data/add.xml', 'k1', 'k3')c = r.read_xml('../data/add.xml', 'k1', 'k4')print(1,2,3)

读取csv文件

csv文件数据

1,3,43,4,7

import pytestimport csv # 导入csv模块class ReadCsv():def read_csv(self, path):item = [] # 定义一个空列表c = csv.reader(open(path, "r")) # 得到csv文件对象for csv_i in c:item.append(csv_i) # 将获取的数据添加到列表中return itempath = '../data/add.csv'r = ReadCsv()lists = r.read_csv(path)class TestClass():def setUp(self):print('setUp')def test01(self):su = 0for i in lists:su = int(i[0]) + int(i[1])num = int(i[2])assert num == su# @pytest.mark.skip() # 跳过该用例(函数)def test02(self):num = int(lists[1][0]) + int(lists[1][1])su = lists[1][2]assert num == int(su)def tearDown(self):print('tearDown')if __name__ == '__main__':# 运行指定模块下,运行所有test开头的类和测试用例pytest.main(['--html=./huuu_test/report.html', 'huuu_test.py', '-s'])

练习题

import pytestimport allureimport osimport csv # 导入csv模块from demo.demo import CateClassclass ReadCsv():def read_csv(self, path):item = [] # 定义一个空列表c = csv.reader(open(path, "r")) # 得到csv文件对象for csv_i in c:item.append(csv_i) # 将获取的数据添加到列表中return itempath = '../data/add.csv'rc = ReadCsv()su = rc.read_csv(path)list01 = su[0]list02 = su[1]c = CateClass()class TestClass():@allure.feature('加法')@allure.story('实际结果')def test_add(self):with allure.step('加法'):su = c.add(int(list01[0]), int(list01[1]))assert int(list01[2]) == su@allure.feature('减法')@allure.story('实际结果')def test_reduct(self):with allure.step('减法'):su = c.add(int(list02[0]), int(list02[1]))assert su == int(list02[2])if __name__ == '__main__':pytest.main(['--alluredir', 'report/result', 'huuu_test.py']) # 生成json类型的测试报告split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean' # 将测试报告转为html格式os.system(split) # system函数可以将字符串转化成命令在服务器上运行

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。