ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

unittest-装饰器-断言-生成测试报告

2021-12-19 17:03:05  阅读:219  来源: 互联网

标签:None 测试报告 arg1 unittest 用例 msg fail arg2 断言


一、装饰器

前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。

于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。

1.用setUp与setUpClass区别

setup():每个测试case运行前运行
teardown():每个测试case运行完后执行
setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次

执行顺序

from selenium import webdriver
import time
import unittest
class BaiDu(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("开始运行类方法")
    @classmethod
    def tearDownClass(cls):
        print("结束运行类方法")
    def setUp(self):   #前置处理,每条用例运行前都会运行setup内容
        print("开始运行用例")
    def tearDown(self):#后置处理,每条用例运行后都会运行teardown内容
        print("结束运行用例")
    def test_01(self):#用例01
        print("用例1")
    def test_02(self):#用例02
        print("用例2")
if __name__=='__main__':
    # 方法一,执行所有用例
    unittest.main()

结果--

开始运行类方法开始运行用例
用例1
结束运行用例
开始运行用例
用例2
结束运行用例
结束运行类方法

二、断言

在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。

用unittest组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:assertEqual、assertIn、assertTrue

基本断言方法
基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。

语法:self.assertEqual(first,second,msg='testcase error!')

序号    断言方法    断言描述
1    assertEqual(arg1, arg2, msg=None)    验证arg1=arg2,不等则fail
2    assertNotEqual(arg1, arg2, msg=None)    验证arg1 != arg2, 相等则fail
3    assertTrue(expr, msg=None)    验证expr是true,如果为false,则fail
4    assertFalse(expr,msg=None)    验证expr是false,如果为true,则fail
5    assertIs(arg1, arg2, msg=None)    验证arg1、arg2是同一个对象,不是则fail
6    assertIsNot(arg1, arg2, msg=None)    验证arg1、arg2不是同一个对象,是则fail
7    assertIsNone(expr, msg=None)    验证expr是None,不是则fail
8    assertIsNotNone(expr, msg=None)    验证expr不是None,是则fail
9    assertIn(arg1, arg2, msg=None)    验证arg1是arg2的子串,不是则fail
10    assertNotIn(arg1, arg2, msg=None)    验证arg1不是arg2的子串,是则fail
11    assertIsInstance(obj, cls, msg=None)    验证obj是cls的实例,不是则fail
12    assertNotIsInstance(obj, cls, msg=None)    验证obj不是cls的实例,是则fail
三、自动生成HTML报告

批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。

unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner.py(放到python的lib目录下面)

unittest不能自动发送邮箱,需要导入邮箱的模块,Email.py(放到项目目录下)

语法:

#批量执行脚本文件
import unittest
import time
from HTMLtestRunner import HTMLTestRunner
import Email
case_path=r'D:\pych\pycunchu\_ui_selenium\run_unin'
dis=unittest.defaultTestLoader.discover(start_dir=case_path,pattern="unin0*.py")
nowTime=time.strftime('%Y-%m-%d-%H-%M-%S')#更新的报告更名为匹配时间格式的HTML文件
reportname=nowTime + 'report.html'#时间加报告名称
dir=open(reportname,'wb')
runner=HTMLTestRunner(stream=dir,title='百度搜索ui测试',tester='zhangsan',description='用例执行情况如下:')
runner.run(dis)
email=Email.Sum_Mail(reportname,reportname)
email.send_mail()






标签:None,测试报告,arg1,unittest,用例,msg,fail,arg2,断言
来源: https://blog.csdn.net/qq_44765560/article/details/122025945

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有