首页 > 其他 > 详细

unittest

时间:2020-06-24 17:08:32      阅读:52      评论:0      收藏:0      [点我收藏+]

1、用一段代码测试另一段代码,基本写法;

import unittest
from unittest import TestCase

#写一个待测函数
def add(a,b):
    return a+b

class AddTest(unittest.TestCase):  #继承

    def test_add_normal(self):    #以test开头
        result = add(1,2)         #调用
        self.assertEqual(3,result)    #断言

    def test_add_error(self):
        er = 0
        result= add(1,2)
        self.assertEqual(er,result,msg="‘预期结果%s,实际结果%s‘ %(result,er)")

#执行第一种方式:运行当前python文件下所有以test开头的的所有用例
unittest.main()

#执行第二种方式-执行单条测试用例
suite = unittest.TestSuite()
suite.addTest(AddTest(test_add_normal))

#执行第二种方式-执行所有测试用例
suite = unittest.makeSuite(AddTest)

#执行
runner = unittest.TextTestRunner()
runner.run(suite)

2、生成测试报告,用HTMLTestRunner;

import HTMLTestRunner

suite = unittest.makeSuite(AddTest) runner = unittest.TextTestRunner() f = open(测试报告1.html,wb) runner = HTMLTestRunner.HTMLTestRunner(f,title=测试报告1,description=add函数测试报告) runner.run(suite) f.close()

 3、生成测试报告,用nnreport,nnreport是牛牛在BeautifulReport模块的基础上改进的

import unittest
from unittest import TestCase
import nnreport

#写一个待测函数
def add(a,b):
    return a+b

class AddTest(unittest.TestCase):  #继承

    def test_add_normal(self):#以test开头
        ‘‘‘正常情况‘‘‘        #用例描述,会提现在测试报告上
        result = add(1,2)         #调用
        self.assertEqual(3,result)    #断言

    def test_add_error(self):
        ‘‘‘异常情况‘‘‘
        er = 0
        result= add(1,2)
        self.assertEqual(er,result,msg="‘预期结果%s,实际结果%s‘ %(result,er)")

suite = unittest.makeSuite(AddTest)
runner = nnreport.BeautifulReport(suite)
runner.report(description=测试报告2,filename=add测试报告,log_path=rC:\Users\lenovo\Desktop)

 4、参数化

import unittest
import requests
import os
import parameterized

class GetData:       #从文件中读取参数
    @staticmethod
    def read_data_to_file(filename):
        data = []
        if os.path.exists(filename):
            with open(filename,r,encoding=utf-8) as fr:
                for line in fr:
                    d1 = line.strip().split(,)  #每行分隔完之后变成一个数组
                    data.append(d1)
        else:
            raise FileNotFoundError(参数化文件找不到)
        return data

class Req_test:
    url = http://api.nnzhp.cn/api/user/stu_info

    def test_singel(self,name,age):    #直接传参
        data = {stu_name:name,age:age}
        req = requests.get(self.url,data)
        return req.json()

    @parameterized.parameterized.expand(         #参数以列表的方式传入
        [
            [xiaohei,10],
            [xiaobai,15]
        ]
    )
    def test_more(self, name, age):  # 从列表中循环读取参数传入
        data = {stu_name: name, age: age}
        req = requests.get(self.url, data)
        return req.json()

    @parameterized.parameterized.expand(GetData.read_data_to_file(stu_info.txt))   #从文件中读取
    def test_more(self, name, age):
        data = {stu_name: name, age: age}
        req = requests.get(self.url, data)
        return req.json()

5、查找测试用例

import unittest
suite = unittest.defaultTestLoader.discover(cases,*.py)  # *查找cases下所有的python文件作为测试用例执行,默认查找以test开头的

 6、TestCase中测试用例执行顺序:

import unittest
class AddTest(unittest.TestCase): def setUp(self) -> None: #每条用例运行前都会执行 print(setup1) def tearDown(self) -> None: #每条用例执行后都会执行(例如清缓存) print(teardown1) @classmethod #最先开始执行 def setUpClass(cls) -> None: print(setup2) @classmethod #最后执行 def tearDownClass(cls) -> None: print(teardown2)
###普通以test开头的方法,默认是根据ASCII码的顺序加载测试用例,即按名称排序:数字与字母的顺序为:0-9,A-Z,a-z
def test_a(self): pass def test_b(self): pass

 

unittest

原文:https://www.cnblogs.com/whcp855/p/13178597.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!