• python pytest单元测试


    ​ python pytest+allure


    1.准备工作

    pip install pystest
    

    如果使用pytest-html生成html报告的话,还需要下载

    pip install pytest-html
    

    2. pytest的命名规则

    • pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法,比unittest更加严谨。
    • pytest的模块命名必须以test_开头或者结尾,否则不能找到该模块的测试用例。

    3. pytest与unittest的相同点

    • unittest :Setup>> setupclass , teardown >> teardownclass
    • Pytest: setup, setup_class和teardown, teardown_class函数(和unittest执行效果一样)
    • 运行于测试方法的始末,即:运行一次测试函数会运行一次setup和teardown
    • 运行于测试方法的始末,但是不管有多少测试函数都只执行一次setup_class和 teardown_class

    4. pytest利用自带的pytest-html生成报告。

     pytest.main(["--html=./report.html","模块.py"])
    

    5. allure 的使用

    1. Allure 是一款轻量级并且非常灵活的开源测试报告框架。它支持绝大多数测试框架。

    2. 使用步骤:

      1.首先配置allure的环境变量。 命令行窗口输入allure查看是否安装成功。

      2.其次要安装allure

      pip install allure-pytest
      

      allure-pytest是Pytest的一个插件,通过它我们可以生成Allure所需要的用于生成测试报告的数据

    6.案例演示

    题目描述:测试开发的两个方法,一个相加,一个相减,数据分别存储在.csv和.xml文件中,结合使用pytest和

    allure展示测试报告,(在@allure .story分别实现相加减)

    # 文件夹解释
    datas:存放数据文件  
    demos:存放开发写的文档文件
    pytest01:存放测试代码,此案例只使用test_03.py
    readdatas:读取数据的代码文件夹
    

    代码如下:

    # datas/data.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <note>
        <add>
            <add1>2</add1>
            <add2>5</add2>
            <add3>7</add3>
        </add>
        <reduce>
            <reduce1>8</reduce1>
            <reduce2>5</reduce2>
            <reduce3>3</reduce3>
        </reduce>
    </note>
    
    # datas/data.csv
    2,5,7
    
    #demos/classes.py
    class BaseClass(object):
        def add(self, a, b):
            c = a + b
            return c
    
        def reduce(self, a, b):
            c = a - b
            return c
    
    #readdatas/readdatacsv.py
    import csv  # 导入csv模块
    
    
    class ReadCsv():
        def read_csv(self):
            item = []  # 定义一个空列表
            c = csv.reader(open("../datas/datas.csv", "r"))  # 得到csv文件对象
            for csv_i in c:
                item.append(csv_i)  # 将获取的数据添加到列表中
            return item
    
    
    r = ReadCsv()
    print(r.read_csv())
    
    
    #readdatas/readdataxml.py
    from xml.dom import minidom
    
    
    class Readxml():
        def read_xml(self, filename, onename, twoname):
            root = minidom.parse(filename)
            firstnode = root.getElementsByTagName(onename)[0]
            secondnode = firstnode.getElementsByTagName(twoname)[0].firstChild.data
            return secondnode
    # readxml = Readxml()
    # a = readxml.read_xml("../datas/data.xml", "add", "add1")
    # print(a)
    
    # pytest01/test_03.py
    import pytest, os, allure
    from demos.classes import BaseClass
    from readdatas.readdatacsv import ReadCsv
    from readdatas.readdataxml import Readxml
    
    base = BaseClass()  # 导入开发的模块
    csv = ReadCsv()
    datac = csv.read_csv()  # 拿到csv数据   利用csv拿到两数相加的数据
    xml = Readxml()
    
    
    class TestClass():
        @allure.story("两数相加")
        def test001(self):
            # 两数相加测试   利用csv拿数据
            for i in datac:
                c = base.add(int(i[0]), int(i[1]))
                assert c == int(i[2])
    
        @allure.story("两数相减")
        def test002(self):
            # 两数相减测试,利用xml拿数据
            zz = int(xml.read_xml("../datas/data.xml", "reduce", "reduce1"))  # 拿到xml数据, 利用xml拿到两数相减的数据
            xx = int(xml.read_xml("../datas/data.xml", "reduce", "reduce2"))
            yy = int(xml.read_xml("../datas/data.xml", "reduce", "reduce3"))
            rr = base.reduce(zz, xx)
            assert rr == yy
    
    
    if __name__ == '__main__':
        pytest.main(['--alluredir', 'report/result', 'test_03.py'])  # 生成json类型的测试报告
        split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'  # 将测试报告转为html格式
        os.system(split)  # system函数可以将字符串转化成命令在服务器上运行
    

    然后点击运行。找到report/html下的.html文件打开查看报告。

  • 相关阅读:
    Eclipse汉化教程
    php课程---文件操作及文件上传的代码总结
    php课程---Json格式规范需要注意的小细节
    php课程---php使用PDO方法详解(转)
    php课程---随机数
    php课程---Ajax(老师详解)
    php课程---JavaScript与Jquery的区别
    php课程---JavaScript与Jquery的区别(转)
    php课程---初学PDO
    php课程---练习(联系人信息表)
  • 原文地址:https://www.cnblogs.com/zjldeboke/p/14849846.html
Copyright © 2020-2023  润新知