• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

单元测试:pytest

武飞扬头像
学IT的那些年
帮助1

命名规则

Pytest 单元测试中的类名和方法名必须是以 test 开头 , 执行中只能找到 test 开头的类和方法,比unittest更加严谨

Pytest生成自带的html测试报告

前提条件:需要下载pytest-html模块(python自带的生成测试报告模块)

pip install pytest-html


Pytest调用语句

pytst . main ([ '-x' , '--html=./report.html' , 't12est000.py' ])
-x 出现一条测试用例失败就退出测试
-s: 显示 print 内容

Pytest的运行方式

. 点号,表示用例通过
F 表示失败 Failure
E 表示用例中存在异常 Error

拿取数据 

  1.  
    from xml.dom import minidom
  2.  
    class ReadXml():
  3.  
    # def readxml(self):
  4.  
    # # parse解析哪个xml文件
  5.  
    # #../返回上一级 解析test01.xml
  6.  
    # #root随意起名
  7.  
    # root = minidom.parse("../data/test01.xml")
  8.  
    # #add对应的标签
  9.  
    # firstnode=root.getElementsByTagName("add")[0]
  10.  
    # #拿到add里面的数据 firstChild.data获取第一个
  11.  
    # secondnode=firstnode.getElementsByTagName("exepiton")[0].firstChild.data
  12.  
    # return secondnode
  13.  
    # # #打印
  14.  
    # # print(root)
  15.  
     
  16.  
    # parse解析哪个xml文件
  17.  
    # ../返回上一级 解析test01.xml
  18.  
    # root随意起名
  19.  
    def readxml(self,path,firstname,secondname):
  20.  
    #传进文件路径
  21.  
    root = minidom.parse(path)
  22.  
    firstnode = root.getElementsByTagName(firstname)[0]
  23.  
    secondnode = firstnode.getElementsByTagName(secondname)[0].firstChild.data
  24.  
    return secondnode
  25.  
    # #打印
  26.  
    # print(root)
  27.  
    #调用实例化对象 print输出
  28.  
    print(ReadXml().readxml("../data/test01.xml","add","exepiton"))
学新通

导入pytest验证是否通过

  1.  
    #导入
  2.  
    import pytest
  3.  
    class TestClass():
  4.  
    # def setup(self):
  5.  
    # print("setup")
  6.  
    # @classmethod
  7.  
    # def setup_class(cls):
  8.  
    # print("setup_class")
  9.  
    # def test001(self):
  10.  
    # print("我是test001")
  11.  
    # def test002(self):
  12.  
    # print("我是test002")
  13.  
    # def teardown(self):
  14.  
    # print("teardown")
  15.  
    # @classmethod
  16.  
    # def teardown_class(cls):
  17.  
    # print("teardown_class")
  18.  
    def test001(self):
  19.  
    assert 3==4
  20.  
    def test002(self):
  21.  
    assert 2==2
  22.  
    #跳过语句
  23.  
    @pytest.mark.skip
  24.  
    def test003(self):
  25.  
    assert 1==1
  26.  
    if __name__ == '__main__':
  27.  
    #加入参数只执行一个 放入路径
  28.  
    # pytest.main(["-s","test_001.py"])
  29.  
    #生成测试报告
  30.  
    pytest.main(["-s","test_001.py","--html=./report.html"])
学新通

学新通

 学新通

 类名规则报错

学新通

 学新通

 加入参数 -s才能出运行结果

学新通

报错为 没有权限

学新通

 解决方法 加入下载pytest

学新通

 然后生成测试报告

学新通

跳过语句的演示 

学新通

 测试报告显示出

学新通

 f报错 .为通过  s为跳过

学新通

 学新通

 参数必须加入命名才能运行出来

学新通

 testxml代码

  1.  
    from calcdemo.calc import Calc
  2.  
    from readdata.readxml import ReadXml
  3.  
    import pytest
  4.  
    #实例化
  5.  
    c = Calc()
  6.  
    r = ReadXml()
  7.  
    qq=int(r.readxml("../data/test1.xml","cheng","cheng1"))
  8.  
    ww=int(r.readxml("../data/test1.xml","cheng","cheng2"))
  9.  
    ee=int(r.readxml("../data/test1.xml","cheng","execption"))
  10.  
    rr=int(r.readxml("../data/test1.xml","chu","chu1"))
  11.  
    tt=int(r.readxml("../data/test1.xml","chu","chu2"))
  12.  
    yy=int(r.readxml("../data/test1.xml","chu","execption"))
  13.  
    class TestXml():
  14.  
    def test001(self):
  15.  
    #拿到实际结果
  16.  
    result = c.cheng(qq,ww)
  17.  
    assert result ==ee
  18.  
    def test002(self):
  19.  
    result = c.chu(rr,tt)
  20.  
    assert result == yy
  21.  
    if __name__ == '__main__':
  22.  
    pytest.main(["--html=./report.html","testxml.py"])
学新通

readxml代码块

  1.  
    from xml.dom import minidom
  2.  
    class ReadXml():
  3.  
    def readxml(self,past,firstname,secondname):
  4.  
    #拿到根数据
  5.  
    root = minidom.parse(past)
  6.  
    firstname = root.getElementsByTagName(firstname)[0]
  7.  
    secondname = firstname.getElementsByTagName(secondname)[0].firstChild.data
  8.  
    return secondname
  9.  
    #验证
  10.  
    if __name__ == '__main__':
  11.  
    r = ReadXml()
  12.  
    #打印数据
  13.  
    print(r.readxml())

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfikikg
系列文章
更多 icon
同类精品
更多 icon
继续加载