unittest

单元测试框架Uinttest一文详解

感情迁移 提交于 2019-11-30 14:22:40
一谈及unittest,大家都知道,unittest是Python中自带的单元测试框架,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。unittest单元测试框架不仅可以适用于单元测试,还可以适用web自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。 在聊unittest时,需要先明白,最基础的四个概念:TestCase,TestSuite,TestRunner,TestFixture,看如下静态图: unittest运行流程 先编写好TestCase,然后由TestLoader加载TestCase到TestSuite,其次由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。 unittest模块的各个属性说明 unittest.TestCase :TestCase类,所有测试用例类继承的基本类。 class BaiduTest(unittest.TestCase): unittest.main() :使用它可以方便的将一个单元测试模块变为可直接运行的测试脚本

python3(三十四)unitTest

自作多情 提交于 2019-11-30 08:03:18
""" 单元测试 """ __author__on__ = 'shaozhiqi 2019/9/23' class Dict(dict): def __init__(self, **kw): super().__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value # 为了测试上面的代码,编写单元测试,我们需要引入Python自带的unittest模块 import unittest # 也可以将上面的方法单独写到一个文件总用如下语法引入,对其进行测试 # from 目标测试文件名 import 要测试的组件 class TestDict(unittest.TestCase): def test_init(self): d = Dict(a=1, b='test') self.assertEqual(d.a, 1) self.assertEqual(d.b, 'test') self.assertTrue(isinstance(d, dict

python_单元测试unittest(1)

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 06:36:31
'''''''''1、运行方式 1、鼠标右击 2、在Terminal(控制台)中运行: 先加上 if __name__=='__main__': unittest.main() Terminal(控制台)输入命令: python <模块名.py> 2、测试套件(TestSuite) 命令(全部)执行: python -m unittest <模块名.py> 单个执行: python -m unittest <模块名.类名> python -m unittest <模块名.类名.方法名> 3、加载(TestLoader) 需要先初始化一个对象,suite 测试套件(集合) 3.1--第一种方法) #初始化测试套件 suite=unittest.Testsuite() #往测试套件里面添加测试用例,先导入模块 cases=[类名('方法名'),类名('方法名')] suite.addTests(cases) 3.2--第二种方法) suite=unittest.Testsuite(tests=cases) 4、运行,测试报告文件, 先打开一个文件 with open('txt','w',encoding='utf8') as f: #初始化runner,日志详细级别,略->细(0,1(默认),2) runner=unittest.TextTestRunner(f,verbosity=0

python_单元测试unittest的三种运行方式(2)

给你一囗甜甜゛ 提交于 2019-11-30 06:36:01
'''******************************** ****第一种方式运行流程************************************0、先写testcase测试套件 导入模块 from ... import ...1、初始化测试套件 suite=unittest.TestSuite()2、往测试套件中添加测试用例 cases=[类名('方法名'),类名('方法名')] suite.addTests(cases) 3、运行前先将测试报告写在一个文件中 with open('demo.txt','w',encoding='utf8') as f: 3.1、初始化runner runner=unittest.TextTestRunner(f,verbosity=2) 3.2、运行 runner.run(suite) 上面的1和2步骤,可以更改为(*如下两行*)cases=[类名('方法名'),类名('方法名')]suite=unittest.TestSuite(tests=cases)-------------------------------------------------******************************** ****第二种方式运行流程**** loader*****************************

PyUnit (unittest) 的用法

∥☆過路亽.° 提交于 2019-11-30 05:55:20
PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试。PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用于进行白盒测试和回归测试。 如果你使用的是 2.1 或更早版本的 Python,则可能需要自行下载和安装 PyUnit,现在的开发者通常不需要操心这些事情。 通过 PyUnit 可以让测试具有持久性,测试与开发同步进行,测试代码与开发代码一同发布。使用 PyUnit 具有如下好处: 可以使测试代码与产品代码分离。 针对某一个类的测试代码只需要进行较少的改动,便可以应用于另一个类的测试。 PyUnit 开放源代码,可以进行二次开发,方便对 PyUnit 的扩展。 PyUnit 是一个简单、易用的测试框架,其具有如下特征: 使用断言方法判断期望值和实际值的差异,返回 bool 值。 测试驱动设备可使用共同的初始化变量或实例。 测试包结构便于组织和集成运行。 PyUnit (unittest) 的用法 所有测试的本质其实都是一样的,都是通过给定参数来执行函数,然后判断函数的实际输出结果和期望输出结果是否一致。 PyUnit 测试与其他 xUnit 的套路一样,基于断言机制来判断函数或方法的实际输出结果和期望输出结果是否一致,测试用例提供参数来执行函数或方法,获取它们的执行结果

Python:Python 自动化测试框架 unittest 和 pytest 对比

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 04:02:59
一、用例编写规则 1.unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:   (1)测试文件必须先import unittest   (2)测试类必须继承unittest.TestCase   (3)测试方法必须以“test_”开头   (4)测试类必须要有unittest.main()方法  2.pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。使用pytest编写用例,必须遵守以下规则: (1)测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)   (2)测试方法必须以“test_”开头。   (3)测试类命名以"Test"开头。  总结: unittest :用例格式--复杂,不能兼容pytest用例;     pytest: 用例格式--简单,可以兼容unittest用例; 二、用例前置和后置 1.unittest提供了setUp/tearDown,只能针对所有用例。 2.pytest提供了模块级、函数级、类级、方法级的setup/teardown,比unittest的setUp/tearDown更灵活。 模块级(setup

seleium 之 EC 的用法

感情迁移 提交于 2019-11-30 03:51:42
场景 Expected Conditions的使用场景有2种 直接在断言中使用 与WebDriverWait配合使用,动态等待页面上元素出现或者消失 方法注释 先翻译一下这些方法的用法 title_is : 判断当前页面的title是否精确等于预期 title_contains : 判断当前页面的title是否包含预期字符串 presence_of_element_located : 判断某个元素是否被加到了dom树里,并不代表该元素一定可见 visibility_of_element_located : 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0 visibility_of : 跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了 presence_of_all_elements_located : 判断是否至少有1个元素存在于dom树中。举个例子,如果页面上有n个元素的class都是'column-md-3',那么只要有1个元素存在,这个方法就返回True text_to_be_present_in_element : 判断某个元素中的text是否 包含 了预期的字符串 text_to_be_present_in_element_value : 判断某个元素中的value属性是否 包含

unittest discover方法---(虫师《selenium3自动化测试实战--基于Python语言笔记32》)

给你一囗甜甜゛ 提交于 2019-11-30 01:00:47
discover(start_dir,pattern = "test*.py”,top_level_dir = None) start_dir:待测试的模块名或测试用例目录 pattern= "test*.py”:测试用例文件名的匹配原则 top_level_dir = None:测试模块的顶层目录,默认None 例如unittest1目录下的包含test的python文件: import unittest # 定义测试用例的目录为当前目录中的unittest1目录 test_dir = './unittest1' suits = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py') if __name__ == '__main__': runner = unittest.TextTestRunner() runner.run(suits) 来源: https://www.cnblogs.com/kite123/p/11542672.html

unittest 断言方法---(虫师《selenium3自动化测试实战--基于Python语言笔记31》)

霸气de小男生 提交于 2019-11-30 00:41:45
TestCase提供的测试结果的断言方法 方法 检查 版本 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 3.1 assertIsNot(a,b) a is not b 3.1 assertIsNotNone(x) x is not None 3.1 assertIn(a,b) a in b 3.1 assertNotIn(a,b) a not in b 3.1 assertIsInstance(a,b) isinstance(a,b) 3.2 assertNotIsInstance(a,b) not isinstance(a,b) 3.2 例如: import unittest class TestAssert(unittest.TestCase): def test_equal(self): self.assertEqual(2+2, 4) self.assertEqual("python", "python") self.assertNotEqual("hello", "python") def test_in(self): self.assertIn("hello",

pytest介绍、安装及如何自动识别测试用例

淺唱寂寞╮ 提交于 2019-11-30 00:40:14
pytest:基于unittest之上的单元测试框架,其特征有: 1、自动识别测试用例和测试方法(unittest当中,需要引入TestSuite,主动加载测试用例) 2、简单的断言表达:assert 表达式即可。(unittest当中,self.assert*) 3、可以设置会话级(从运行所有用例开始到用例结束)、模块(.py)级、类级(setUpClass/teardownClass)、函数级的fixtures(数据准备+清理工作)(unittest当中是测试类 4、测试用例不一定要放在测试类中(unittest中需要自定义类并继承TestCase) 5、有非常丰富的插件,比如allure插件。(unittest无) 安装命令: pip install pytest 安装html报告的插件: pip install pytest-html 收集测试用例规则: 1、默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录中搜索 2、搜索规则: 1)、符合命名规则test_*.py或者*_test.py 2)、以test_开头的函数名 3)、以Test开头的测试类(没有__init__函数)当中,以test_开头的函数 来源: https://www.cnblogs.com/benben-wu/p/11541831.html