欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告

程序员文章站 2022-03-11 15:08:43
前言:请自行安装好yaml/allure/jre,并且配置好环境变量HTMLTestRunner.py已修改,支持python3.9。请把它放在你的python\Lib目录下HTMLTestRunner.py下载1.项目文件结构目录allureReport:用来存放allure生成的测试报告HTMLTestRunnerReport:用来存放HTMLTestRunner生成的测试报告common(可不用):用来存放封装好的方法,比如连接数据库的方法、发送登陆协议的方法等等config(可不用...

前言:请自行安装好yaml/allure/jre,并且配置好环境变量
HTMLTestRunner.py已修改,支持python3.9。请把它放在你的python\Lib目录下
HTMLTestRunner.py下载
1.项目文件结构目录
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告

  1. allureReport:用来存放allure生成的测试报告
  2. HTMLTestRunnerReport:用来存放HTMLTestRunner生成的测试报告
  3. common(可不用):用来存放封装好的方法,比如连接数据库的方法、发送登陆协议的方法等等
  4. config(可不用):配置文件
  5. data(可不用):测试用的数据文件,可以是csv、yaml、txt、xlrd等格式
  6. testcase:存放各种测试用例

※文件可不用的原因是新手可以先尝试写简单的测试用例,包括数据之类的都可以直接写在case里,但是测试用例如果不用固件封装的话维护性较低,后期再慢慢改进吧。

2.测试用例的固定要求

  1. .py文件必须以test_开头或者_test结尾
  2. 测试类必须以Test开头并且不能带有__init__方法
  3. 测试函数(测试用例)必须以test_开头

举个例子:
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告

class TestItem():                       #测试类可以是这样
class Test_Item():                      #也可以是这样
	def test_login(self, *args):        #测试用例长这样
		'''用例内容'''

3.pytest测试用例案例

class TestItem:
    '''↑↑↑↑↑↑↑↑↑这是个测试类'''
    @staticmethod
    def setup_class(self):     #前置,不明白自己去百度
        print('用例开始执行')

    @staticmethod
    def teardown_class(self):  #后置,同上
        print('用例执行结束')

    def test_1(self):          #测试用例1
        print('nice啊兄die')

    def test_2(self):          #测试用例2
        x = 1
        y = 9
        assert x == y

执行结果,用例1通过并且打印了内容;用例2未通过,因为1≠9。
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
4.Yaml的作用?yaml如何调用?

  • 作用:假设你要通过脚本进行账号登陆,那么你会写一个登陆脚本,然后在脚本内写入要登陆的账号、账号密码。但是这个脚本只能登陆一个账号,如果要登陆1000个账号岂不是要写1000个脚本?这里就可以让脚本访问yaml数据,通过传入不同的账号信息参数,进行不同账号的登陆。
  • 使用:首先要创建一个.yaml文件
    python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
    内容我随便写了两组数据。
    数据1:
s:
    username: sjx001
    password: 1234567

j:
    username: sjx002
    password: 1234567

x:
    username: sjx002
    password: 1234567

数据2:

QQ:
 -
    username: sjx001
    password: 1234567
 -
    username: sjx002
    password: 1234567

weixin:
 -
    username: sjx003
    password: 1234567
 -
    username: sjx004
    password: 1234567

weibo:
  -
    username: sjx005
    password: 1234567
  -
    username: sjx006
    password: 1234567

这个数据让python读取出来的样子是嵌套的字典,我们可以通过键去调用。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
{‘s’: {‘username’: ‘sjx001’, ‘password’: 1234567}, ‘j’: {‘username’: ‘sjx002’, ‘password’: 1234567}, ‘x’: {‘username’: ‘sjx002’, ‘password’: 1234567}}


演示一下


1.如果想使用所有的账号信息,数据1演示。
直接使用ddt.file_data,注意使用DDT的话测试类需要继承unittest。
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
三组数据分别被打印了
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
2.如果只想登陆某组数据,数据2演示。
使用yaml中的键来指定。
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
结果是只打印了weibo下面的账号信息,OK
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
5.HTMLTestRunner生成测试报告
源码及注释都给你打出来,自己去理解。

import time
import os
import unittest
from HTMLTestRunner import HTMLTestRunner

def getAllCases():
    '''获取test_dir目录下所有以test_开头的测试用例并放入容器Testsuite中'''
    test_dir = r'D:\Test\testcase'
    Testsuite = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
    return Testsuite

def Runmain():
    '''在指定的路径下生成html格式的测试报告'''
    TestReport_dir = 'D:\Test\HTMLTestRunnerReport'
    fp = open(os.path.join(TestReport_dir, time.strftime("%Y-%m-%d %H时%M分%S秒")+'测试报告.html'), 'wb')
    runner = HTMLTestRunner(stream=fp, title='sjx的自动化测试报告', description='这是个案例')
    runner.run(getAllCases())

if __name__ == '__main__':
    Runmain()

生成的测试报告长这样!!!
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
6.allure生成测试报告
在配置好java环境且安装好allure的前提下,请你完成你的测试用例,并且规范点放在自己的测试项目里!
然后在终端输入pytest --alluredir +生成报告的目录。
pytest会开始执行你的测试用例,并且通过allure生成测试报告。
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
然后输入allure serve +生成报告的目录 打开测试报告,完事
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告
两种测试报告根据自己的口味进行选择。达到这一步以后,可以根据实际需求去结合jenkins更进一步完善自动化过程。如果想在linux系统下执行脚本的话配置也是一样的,前提是你能够配置好linux环境。
以上就简单得展示了一遍测试报告的生成。

持续更新ing!当个快乐的测试工程师。
python+pytest/unittest+yaml+ddt+allure/HTMLTestRunner生成测试报告

本文地址:https://blog.csdn.net/sjx1111111/article/details/110872608