python discover()没有加载测试用例_Python系统学习 - Unittest

本文介绍了Python内置的unittest模块,重点讨论了当discover()方法未能加载测试用例时的解决方法。通过run_test.py脚本运行所有符合test规范的测试用例,并利用HTMLTestRunner生成详细的测试报告,便于查看每个测试结果。

c537b3a3170914f0df3c06636ec8774f.png

Python从2.1开始将unittest内置为标准库,方便对程序进行测试、验证,我们对unittest进行学习:

本章的单元测试格式如下:

8fa9dd46ffce3b32785cff68a15b3908.png
新建一个单元测试的例子
本章知识点如下:
1、该测试类需要继承unittest.TestCase
2、结构为:
a、setUp方法测试前准备工作
b、tearDown方法测试后收尾工作
c、测试用例,以test_add(),以test开头,实例化需要的测试类,测试对应函数,self.assertEqual(result, 8)断言测试结果
d、创建测试套件suite,unittest.TestSuite()
e、将测试用例添加到测试套件中,suite.addTest(TestCalculator("test_add"))
f、获取runner,这里用TextTestRunner,直接输出到控制台,unittest.TextTestRunner()
g、运行测试用例,runner.run(suite)
3、断言的几个方法:
assertEqual(a, b): a == b
assertNotEqual(a, b): a != b
assertTrue(x): bool(x) is True
assertFalse(x): bool(x) is False
assertIs(a, b): a is b
assertIsNot(a, b): a is not b
assertIsNone(x): x is None
assertIsNotNone(x): x is not None
assertIn(a, b): a in b
assertNotIn(a, b): a not in b
assertIsInstance(a, b): isinstance(a, b) 判断a是否是b的实例
assertNotIsInstance(a, b): not isinstance(a, b) 判断a是否不是b的实例
4、测试用例的规范设计:
项目中:test_case文件夹:
test_calculator.py
test_leapyear.py
calculator.py
leap_year.py
run_test.py
一个测试项目,需要一个test_case测试用例文件夹,里面存放测试用例,被测功能一般在外面,这里没有再做处理,
通过定义run_test.py,创建一个suit = unittest.defaultTestLoader.discover(test_dir, pattern),
该套件会主导在指定目录下查找测试用例,从而达到简便执行所有指定测试用例
(不同到功能测试用例存放在不同的py文件中,规范格式)
5、测试用例执行顺序:
unittest默认根据ASCII码的顺序加载测试用例的(数字与字母的顺序为0~9,A~Z,a~z),并不是按照测试用例的创建
顺序从上往下执行的
另外一种通过声明TestSuite类,addTest()方法按照一定顺序来加载测试用例也可以实现顺序自定义
6、执行多级目录的测试用例:
让unittest查找test_case目录下子目录中的测试文件,可以中每个子目录下放一个__init__.py文件,将一个目录标记成
一个标准的Python模块
7、跳过测试用例和预期失败:
(利用装饰器实现:在用例前添加@unittest.skip("直接跳过测试用例"))
a、无条件跳过测试用例:unittest.skip("直接跳过测试用例")
b、如果条件为真,则跳过该测试用例:unittest.skipIf(3 > 2, "当条件为真时跳过")
c、如果条件为真时,执行该测试用例:unittest.skipUnless(3 > 2, "条件为真时执行该测试用例")
d、直接将该测试用例标记为Fail:unittest.expectedFailure()
8、Fixture:
setUpModule()/tearDownModule():整个模块开始与结束时执行
setUpClass(cls)/tearDownClass(cls):测试类开始和结束时执行
(setUpClass(cls)/tearDownClass(cls),属于类方法,需要通过@classmethod进行装饰,cls和self没什么区别,都表示方法的第一个参数)
setUp(self)/tearDown(self):测试用例开始和结束时执行
9、编写简易自动化测试:
如test_baidu.py,注意其结构:
# coding = utf8
import os
os.path.abspath(".")
import unittest
from selenium import webdriver
from time import sleep
class TestBaidu(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.base_url = "百度一下,你就知道"
# 根据不同内容搜索
def baidu_search(self, search_keys):
self.driver.get(self.base_url)
sleep(2)
self.driver.find_element_by_id("kw").send_keys(search_keys)
self.driver.find_element_by_id("su").click()
sleep(2)
def test_search_keys_selenium(self):
search_keys = "selenium"
self.baidu_search(search_keys)
self.assertEqual(self.driver.title, search_keys + "_百度搜索")
print(self.driver.title)
def test_search_keys_appium(self):
search_keys = "appium"
self.baidu_search(search_keys)
self.assertEqual(self.driver.title, search_keys + "_百度搜索")
@classmethod
def tearDownClass(cls):
cls.driver.quit()

209aa6323651d201bcec515a80371ac2.png

接下来附上文件:

unittest_sample​pan.baidu.com

通过run_test.py运行测试用例:

对所有的test规范格式的测试用例进行run,使用HTMLTestRunner整理获得测试报告,输出至网页中,每一条都清晰可见

run_test.py

# coding = utf8

import os
os.path.abspath(".")
import unittest
import HtmlTestRunner

test_dir = "./unittest_sample/test_case"
suit = unittest.defaultTestLoader.discover(test_dir, pattern = "test*.py")
runner = HtmlTestRunner.HTMLTestRunner("./unittest_sample/report/report.html")
runner.run(suit)

077a033b0599fef248df172313e43580.png
下一章,我们对unittest进行一个扩展,当前就先到这里啦!

关注 + 收藏 + 点赞哦,谢谢啦~

80e2bd5cada4efcf6bce17b0639dba2d.png
tcp ip upper tester 1.2 Testability Protocol and Service Primitives 1 Introduction and Functional Overview ................................................................. 5 2 Acronyms and Abbreviations............................................................................... 6 3 Related Documentation....................................................................................... 7 3.1 Input documents........................................................................................... 7 3.2 Related Standards and Norms ..................................................................... 7 3.3 Related specification .................................................................................... 7 4 Constraints and Assumptions.............................................................................. 8 4.1 Limitations .................................................................................................... 8 4.2 Applicability to car domains.......................................................................... 8 5 Intended context and applicability of protocol...................................................... 9 5.1 Dependencies to other protocol layers ......................................................... 9 5.2 Dependencies to other standards and norms............................................... 9 6 Protocol Specification........................................................................................ 10 6.1 Message Format and Protocol Fields......................................................... 10 6.2 Message Exchange.................................................................................... 11 6.3 States of Service Primitives........................................................................ 12 6.4 Default Behavior......................................................................................... 12 6.5 Constraints ................................................................................................. 12 6.6 Extensibility ................................................................................................ 12 6.7 Data Types and Format.............................................................................. 13 6.7.1 Boolean............................................................................................... 13 6.7.2 Unsigned............................................................................................. 13 6.7.3 Signed................................................................................................. 13 6.7.4 Floating Point ...................................................................................... 13 6.7.5 Variable Length................................................................................... 14 6.8 Result IDs................................................................................................... 15 6.8.1 Standard Results................................................................................. 15 6.8.2 Testability Specific .............................................................................. 15 6.8.3 Service Primitive Specific.................................................................... 15 6.9 Service Groups........................................................................................... 16 6.9.1 General Group .................................................................................... 16 6.9.2 UDP Group.......................................................................................... 17 6.9.3 TCP Group.......................................................................................... 17 6.10 Service Primitives....................................................................................... 18 6.10.1 Get Version ......................................................................................... 18 6.10.2 Start Test............................................................................................. 19 6.10.3 End Test.............................................................................................. 19 6.10.4 Close Socket....................................................................................... 20Testability Protocol and Service Primitives AUTOSAR TC Release 1.1.0 4 of 29 Document ID 778: AUTOSAR_PRS_TestabilityProtocolAndServicePrimitives - AUTOSAR Confidential - 6.10.5 Create and Bind .................................................................................. 20 6.10.6 Send Data ........................................................................................... 21 6.10.7 Receive and Forward .......................................................................... 22 6.10.8 Listen and Accept................................................................................ 23 6.10.9 Connect............................................................................................... 23 6.10.10 Configure Socket ..........
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值