Python3:使用单元测试框架 unittest

2019-12-03  本文已影响0人  Queenie的学习笔记
1. 定义【测试类】 LoginCase
2. 定义【测试测试方法】 testAdd、testMultiply等
2.1 添加前置方法setUp(),例如所有的请求都用session管理,所有的用例都是基于登录后操作
def setUp(self):      # 前置
        self.url = "http://www.kuaidi.com/index-ajaxselectcourierinfo-1202247993797-yunda.html"
        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"}  # get方法其它加个ser-Agent就可以了

        self.s = requests.session()
2.2 添加后置方法tearDown(),例如做数据清理,只测新增草稿箱的功能
def tearDown(self):
        # 后置处理,清理垃圾数据,不影响后续用例
        pass
3. 做出【断言】 assertEqual(),一个用例中可以有多个检查点(断言)
class LoginCase(unittest.TestCase):  #继承单元测试unittest.TestCase这个类

    def testAdd(self):  # 测试方法(用例)必须以test开头
        self.assertEqual((1 + 2), 3)
        self.assertEqual(0 + 1, 1)
        
    def testMultiply(self):  #测试方法(用例)必须以test开头
        self.assertEqual((0 * 10), 0)
        self.assertEqual((5 * 8), 40)

if __name__ == '__main__':
    unittest.main()
4. 用例的执行顺序

4.1 按(assic码):0-9 ,A-Z, a-z顺序执行的(编写代码时,无需理会用例的代码行位置,用例是相互独立的,不要去依赖执行顺序)

4.2 Pycharm中,单独执行某一条用例,将鼠标放置在该用例名称后,右击运行
4.3 Pycharm中,要执行全部的用例,将鼠标放置在main函数后,右击运行

5. 执行次数

只执行一次前置,上面必须加@classmethod

class Test1(unittest.TestCase):
    @classmethod  
    def setUpClass(cls):
        print("setUpClass初始化操作:用例开始前只执行一次")

    @classmethod
    def tearDownClass(cls):
        print("tearDownClass收尾清理操作:用例结束时候只执行一次")

    def setUp(self):
        print("setUp每次用例开始前都会执行!!!")

    def tearDown(self):
        print("tearDown每次用例结构都会执行!!!")

    def test_01(self):
        time.sleep(1)
        print("正在执行用例01")

    def test_02(self):
        time.sleep(1)
        print("正在执行用例02")

if __name__ == "__main__":
    unittest.main()

6. 项目结构
图片.png
7. 加载目录
def all_case(case="testcase"):
    '''加载指定目录下的所有的用例'''
    # 待执行用例的目录
    case_dir = os.getcwd()+"\\"+case
    discover = unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)

    print discover
    return discover


if __name__ == "__main__":
    # 返回实例
    runner = unittest.TextTestRunner()
    runner.run(all_case())
8. HTML 报告

8.1.下载HTMLTestRunner.py文件
8.2.放到python2\Lib文件目录

import unittest,HTMLTestRunner,os,time
def all_case(case="testcase"):
    '''加载指定目录下的所有的用例'''
    # 待执行用例的目录
    case_dir = os.getcwd()+"\\"+case
    discover = unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)

    print discover
    return discover


if __name__ == "__main__":
    report_path = os.getcwd()+"\\report\\"+time.strftime("%Y_%m_%d_%H_%M_%S")+".html"

    fp = open(report_path, "wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2, title=u'这是接口自动化测试报告',description=u'用例执行情况:')

    runner.run(all_case())
    fp.close()
上一篇 下一篇

猜你喜欢

热点阅读