一、断言方法

方法

检查 版本
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. 第三次作业:使用Packet Tracer分析TCP连接的建立与释放过程

    0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 使用路由器连接不同的网络 使用命令行操作路由器 通过抓取HTTP报文,分析TCP连接建立的过程 2 实验内容 使用Packe ...

  2. Ubuntu下python使用pyenv+virtualenv进行版本和包隔离

    安装pyenv 参考:https://github.com/pyenv/pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo ...

  3. ARTS Week 4

    标题: ARTS Week 4 分类: ARTS tags: ARTS ----------------------------------- Nov 18, 2019 ~ Nov 24, 2019 ...

  4. 《N诺机试指南》(三)STL使用

    1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...

  5. Codeforces 1117C Magic Ship (二分)

    题意: 船在一个坐标,目的地在一个坐标,每天会有一个风向将船刮一个单位,船也可以移动一个单位或不动,问最少几天可以到目的地 思路: 二分天数,对于第k天 可以分解成船先被吹了k天,到达坐标(x1+su ...

  6. BZOJ 1046 [HAOI2007]上升序列(LIS + 贪心)

    题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们 ...

  7. Flutter开发之Widget布局和页面导航

    一.水平布局Row Row控件可以分为非灵活排列和灵活排列两种,灵活的可以在外边加入Expanded使用 两者混用: import 'package:flutter/material.dart'; v ...

  8. 根据navigator.userAgent返回值识别 浏览器

    function validBrowser(){ var u_agent = navigator.userAgent; var browser_name='Failed to identify the ...

  9. overflow:hidden;zoom:1;外框自适应 [转]

    在排页面时,碰到了,外框里的元素用fluid 布局,外框的高度不能适应的问题,查了一下资料,发现了博友的一篇文章,解决了这个问题,现在分享给大家. 解释不到位的请大牛补充~~~~~~ 高度自适应: h ...

  10. 实例探究Aspectj,解析SentinelResourceAspect

    为了学习SentinelResourceAspect,这篇文章里我用Aspectj实现一个AOP实例,一起来看下. Sentinel 提供了 @SentinelResource 注解用于定义资源,支持 ...