unittest尝试

 TestLoader------工作中常用

自动查找py文件,自动加载里面的方法

加载所有满足要求的测试用例封装成测试套件

可以自定义要求

TestSuite的用法

只挑选几个执行适合用suite的addTest

testsuit只用来打包,不用来执行

实例化

suite.addTest(文件名+类名("方法名"))

 添加类的所有用例:----很少用

 TextTestRunner:

是用来执行测试用例和测试套件的:

先实例化,在调用run方法,--------------------------- runner,run(suite) 

注意左边箭头名字,不然被pytest识别了



Fixture----用例的初始化和销毁

就是setUp和tearDown

自动调用

方法级别---类级别----模块级别

方法级:---------每个方法执行前后都会被调用

 类级别:每个类前后都会被调用

注意加@classmethod

模块级:

是一个普通的函数,在类外面

def setUpModule():

不管py文件有多少类,就执行一次

断言Assert:

所有的断言都继承了unitest.TestCase

self别忘了,注意格式assert里面是实际结果和预期结果

assertEqual:

 assertin:

参数化:

pip install parameterized

多个测试用例代码相同,只是测试数据不同,预期结果不同,可以把多个测试用例通过参数化变成一个测试用例

from parameterized import parameterized

使用@parameterized.expand来修饰

记得导入parmeterized

 也可以把列表提出来:

测试报告:

下载模板放到lib里面修改路径:

#第94行
import StringIO 修改为:import io

#第539行
self.outputBuffer = StringIO.StringIO() 修改为:self.outputBuffer = io.StringIO()

#第631行
print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改为:print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

#第642行
if not rmap.has_key(cls):修改为:if not cls in rmap:

#第766行
uo = o.decode('latin-1')修改为:uo = o

#第772行
ue = e.decode('latin-1')修改为:ue = e

HTMLTestRunner自动生成测试报告 - 简书

import unittest
from HTMLTestRunner import HTMLTestRunner
suite=unittest.TestLoader().discover("./","test*.py")

with open('./result.html', 'wb') as fp:
    runner = HTMLTestRunner(stream=fp, title='test result', description=u'result:')
    runner.run(suite)

1.继承类

import unittest


class TestApi(unittest.TestCase):
    def test_01_login(self):
        print("测试登陆")

    def test_02_login(self):
        print("测试注册")

2.测试套件的用法 unittest.main(defaultTest="suite")

import unittest

from test_apis.test_api import TestApi

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestApi("test_01_login"))


    # 增加一组测试用例
    testcases=[TestApi("test_01_login"),TestApi("test_02_login")]
    suite.addTests(testcases)
    unittest.main(defaultTest="suite")

3.通过加载器TestLoader加载

import unittest

from test_apis.test_api import TestApi

if __name__ == '__main__':
    suite=unittest.defaultTestLoader.discover("./",pattern="test_*.py")
    unittest.main(defaultTest="suite")

断言标题是否相等:

import unittest
from selenium import webdriver

class Test_Bai(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        driver=webdriver.Chrome()
        driver.get("http://www.baidu.com")
        title=driver.title
        print(title)
        return title

    def test_assert_title(self):
        self.assertEqual(self.setUpClass(),"百度一下,你就知道")

if __name__ == '__main__':
    unittest.main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值