一、断言方法

方法

检查 版本
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
assertIsNone(x) x is None 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", "hello world")
self.assertNotIn("hi", "hello") def test_true(self):
self.assertTrue(True)
self.assertFalse(False) if __name__ == '__main__':
unittest.main()

二、测试用例的组织与discover()方法

  要执行多个不同文件下的测试用例,可以使用unittest中的TestLoader类提供的discover()方法查找要用到的测试用例。该类根据各种标准加载测试用例,并将它们返回给测试套件。正常情况下,不需要创建这个类的实例。unittest提供了可以共享的defaultTestLoader类,可以使用其子类或方法创建实例,discover()方法就是其中之一。

  discover(start_dir, pattern='test*.py', top_level_dir=None)

  找到指定目录及其子目录下的所有测试模块,只有匹配的文件名才能被加载。如果启动的不是顶层目录,那么顶层目录必须单独指定。

  • start_dir:待测试的模块名或测试用例目录。
  • pattern='test*.py':测试用例文件名的匹配原则。
  • top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,则默认为None

  一个单元测试的文件目录如下:

两个不相关的判断闰年功能(leap_year.py)和计算器功能(calculator.py)的代码文件分别对应两个测试文件,calculator.py:

 # 计算器类
class Calculator:
def __init__(self, a, b):
self.a = int(a)
self.b = int(b) def add(self):
return self.a + self.b def sub(self):
return self.a - self.b def mul(self):
return self.a * self.b def div(self):
return self.a / self.b

test_calculator.py文件:

 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", "hello world")
self.assertNotIn("hi", "hello") def test_true(self):
self.assertTrue(True)
self.assertFalse(False) if __name__ == '__main__':
unittest.main()

leap_year.py文件:

 class LeapYear:

     def __init__(self, year):
self.year = int(year) def answer(self):
year = self.year
if year % 100 == 0:
if year % 400 == 0:
# 整百年能被400整除的是闰年
return "{0}是闰年".format(year)
else:
return "{0}不是闰年".format(year)
else:
if year % 4 == 0:
# 非整百年能被4整除的是闰年
return "{0}是闰年".format(year)
else:
return "{0}不是闰年".format(year)

test_leap_year.py文件:

 import unittest

 from files.unit_test.leap_year import LeapYear

 class TestLeapYear(unittest.TestCase):
def test_2000(self):
ly = LeapYear(2000)
self.assertEqual(ly.answer(), "2000是闰年") def test_2004(self):
ly = LeapYear(2004)
self.assertEqual(ly.answer(), "2004是闰年") def test_2017(self):
ly = LeapYear(2017)
self.assertEqual(ly.answer(), "2017不是闰年") def test_2100(self):
ly = LeapYear(2100)
self.assertEqual(ly.answer(), "2100不是闰年") if __name__ == '__main__':
unittest.main()

最后,用一个执行文件对这两个测试文件进行执行run_tests.py文件:

 import unittest

 # 定义测试用例的目录为当前目录中的unit_test
test_dir = './'
suits = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suits)

discover()方法会自动根据测试用例目录(unit_test下)查找测试用例文件(test*.py),并将找到的测试用例添加到测试套件中,因此,可以直接通过run()方法执行测试套件suits.这种方式极大地简化了测试用例的查找,我们需要做的是按照文件的匹配规则创建测试文件即可。

Selenium实战(四)——unittest单元测试2(断言方法+discover()多测试用例的执行)的更多相关文章

  1. unittest 单元测试框架断言方法

    unittest单元测试框架的TestCase类下,测试结果断言方法:Assertion methods 方法 检查 版本 assertEqual(a, b)  a == b assertNotEqu ...

  2. unittest常用的断言方法

    unittest常用的断言方法 #msg:判断不成立时需要反馈的字符串 assertEqual(self, first, second, msg=None) --判断两个参数相等:first == s ...

  3. Selenium(十七):unittest单元测试框架(三) 脚本分析、编写Web用例

    1. 带unittest的脚本分析 也许你现在心里还有疑问,unittest框架与我们前面所编写的Web自动化测试之间有什么必然联系吗?当然有,既然unittest可以组织.运行测试用例,那么为什么不 ...

  4. python的unittest单元测试框架断言整理汇总

    自动化脚本最重要的是断言,正确设置断言以后才能帮助我们判断测试用例执行结果. 一.先说说unittest常用的断言吧 常用的就以下几个,网上一搜一大堆.python版本2.7以上都可以调用了. 断言语 ...

  5. unittest中的断言方法

    方法        用途 assertEqual(a,b)      a=b assertNotEqual(a,b)    a!=b assertTrue(x)     x为True assertFa ...

  6. unittest 常用的断言方法

    1.assertEqual(self, first, second, msg=None) --判断两个参数相等:first == second 2.assertNotEqual(self, first ...

  7. Selenium 2自动化测试实战26(unittest单元测试框架)

    一.unittest单元测试框架 1.认识单元测试 1.断言方法 #计算器类 #coding:utf-8 #计算器类 class Count: def __init__(self,a,b): self ...

  8. 测试教程网.unittest教程.7. 各种断言方法

    From: http://www.testclass.net/pyunit/assert/ 背景 unittest支持各种断言方法. 断言列表 官方文档 方法 检查点 assertEqual(a, b ...

  9. unittest单元测试框架

    unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...

随机推荐

  1. golang学习笔记(一):包,变量,函数

    欢迎访问我的博客和github! go 语言学习笔记第一弹,来自 gotour ,以后要常写笔记,把自己学习笔记记录下来,就算只是笔记也要多写. 好记性不如烂笔头,也要多锻炼自己的写作能力. 说实话, ...

  2. Http POST 提交 415错误 Unsupported Media Type 解决方案

    1 问题 在调用webapi post 提交时出现 415 Unsupported Media Type 错误 前端代码如下: $.post("/api/student/poststuden ...

  3. Pycharm学习记录---注释

    在方法下面添加三个双引号然后回车即可添加参数注释

  4. 利用ionic3进行上一行和左一行不动,中间移动的功能

    首先在html中的写法是 <ion-header> <ion-navbar> <ion-title>历史数据</ion-title> </ion- ...

  5. OpenCV3入门(八)图像边缘检测

    1.边缘检测基础 图像的边缘是图像的基本特征,边缘点是灰度阶跃变化的像素点,即灰度值的导数较大或极大的地方,边缘检测是图像识别的第一步.用图像的一阶微分和二阶微分来增强图像的灰度跳变,而边缘也就是灰度 ...

  6. 小cookie,大智慧

    Cookie是什么?cookies是你访问网站时创建的数据片段文件,通过保存浏览信息,它们使你的在线体验更加轻松. 使用cookies,可以使你保持在线登录状态,记录你的站点偏好,并为你提供本地化支持 ...

  7. 工程引用libm.a文件的sin函数后

    更改前后的main.c //#include <math.h> ; int var_bss; int main() { double d; // d = sin(3.14/2); ; } ...

  8. 见异思迁:K8s 部署 Nginx Ingress Controller 之 kubernetes/ingress-nginx

    前天才发现,区区一个 nginx ingress controller 竟然2个不同的实现.一个叫 kubernetes/ingress-nginx ,是由 kubernetes 社区维护的,对应的容 ...

  9. 网络设备 密码、用户级别 AAA授权 的管理

    一.进入 特权模式 密码 设置访问网络设备特权模式口令 cisco>enable cisco#config terminal cisco(config)#enable password 密码 e ...

  10. 部署LAMP环境搭建一个网站论坛平台

    修改主机名 Hostname openstack-001 Hostname Login 修改本地域名解析 Vi /etc/hosts 最后一行添加 192.168.1.56 openstack-001 ...