day11-unittest框架

目录

unittest框架

断言操作

自动化用例管理TestLoader类


unittest框架

  • 通过unittest框架创建测试

  1. 必须继承unittest.TestCase类

  2. 可以定义setUp和tearDown方法进行初始化,也可以使用setUpClass和tearDownClass进行初始化

  3. 所有测试方法必须以test开头。测试方法会在运行时自动被调用。

  4. 可以使用pycharm自带的unittest框架运行,也可以以普通方式运行。

import unittest
​
​
class Demo(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print('setupclass方法 第一个调用')
​
    @classmethod
    def tearDownClass(cls) -> None:
        print('tearDownClass方法 最后一个调用')
​
    def setUp(self) -> None:
        print('初始化方法')
​
    def tearDown(self) -> None:
        print('结束方法')
​
    def test_func1(self):
        print('第一个测试方法')
​
    def test_func2(self):
        print('第二个测试方法')
  • setUp:每个测试方法执行之前执行一次

  • tearDown:每个测试方法执行之后执行一次

  • setUpClass:整个测试类执行之前执行一次

  • tearDownClass:整个测试类执行之后执行一次

测试方法的执行顺序是按方法名来排的

断言操作

通过unittest框架添加断言

常见断言

  • assertIn

  • assertNotln

  • assertEqual

  • assertNotEqual

  • assertTrue

  • assertFalse

    def test_func1(self):
        print('第一个测试方法')
        self.assertEqual(1, 2)
        print('这句话不会被执行')
​
    def test_func2(self):
        print('第二个测试方法')
        self.assertNotEqual(1, 2)

断言失败时失败的方法不会继续往下执行

自动化用例管理TestLoader类

TestLoader类常见方法

  • loadTestsFromTestCase():从定义好的测试类里加载测试方法

  • loadTestsFromModule():从python模块(文件)里加载测试方法

  • loadTestsFromNames():加载指定名称的测试方法

  • discover():从路径中加载测试方法

loadTestsFromTestCase

from web自动化.unittest_demo import Demo
import unittest
​
​
st = unittest.defaultTestLoader.loadTestsFromTestCase(Demo)     # 从测试类 加载测试方法
suit = unittest.TestSuite([st])     # 将测试方法写入测试集
​
unittest.TextTestRunner().run(suit)

从指定测试类中加载测试方法

loadTestsFromModule

import unittest
from web自动化 import unittest_demo
from web自动化 import unittest_demo2
​
​
mods = [unittest_demo, unittest_demo2]
modules = []
​
for mod in mods:    # 循环 加载测试模块 添加进列表
    a = unittest.defaultTestLoader.loadTestsFromModule(mod)
    modules.append(a)
​
tests = unittest.TestSuite(modules)     # 等同于[a1, a2]
unittest.TextTestRunner().run(tests)

从指定的模块(python文件)中加载测试方法

loadTestsFromNames

import unittest
from web自动化 import unittest_demo
​
​
def getfullName(names):
    items = []
    for name in names:
        if 'func2' in name:     # 过滤出包含func2的测试方法名 在(冒烟测试时只测试带有 smoke 的方法)有用
            items.append('unittest_demo.Demo.' + name)
    return items
​
​
case_name = unittest.defaultTestLoader.getTestCaseNames(unittest_demo.Demo)     # 获取测试类的所有测试方法的名字
item_names = getfullName(case_name)     # 对所有测试方法名进行拼接  unittest_demo.Demo.funcname
​
st = unittest.defaultTestLoader.loadTestsFromNames(item_names)      # 使用方法名 加载测试方法 ['unittest_demo.Demo.funcname']
suite = unittest.TestSuite([st])
​
unittest.TextTestRunner().run(st)

loadTestsFromNames用于从测试类中挑选出需要运行的测试方法

discover

import unittest

base_url = 'cases'     # 与当前运行文件在同一路径下 所有测试用例 分类保存在此文件夹下
test_case = unittest.defaultTestLoader.discover(base_url + '/mms/', pattern='*.py')
print(test_case)
rs = unittest.TestSuite(test_case)

unittest.TextTestRunner().run(rs)

discover用于从指定路径下加载需要运行的测试方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值