单元测试负责对最小的软件设计单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序进行测试以发现模块中的错误。

下面演示不用测试框架的单元测试:

# 计算器类
class Count:
def __init__(self, a, b):
self.a = int (a)
self.b = int (b)
# 计算加法 def add(self):
return self.a + self.b

创建一个Count类用于两个整数的计算,通过_init_方法对两个数进行初始化,然后再初创建add()方法返回两个数相加的结果。

根据上面所实现的功能,不用测试框架所编写的单元测试如:test.py

 # coding=utf-8
from calculator import Count # 测试两个数相加
class TestCount:
def test_add(self):
try:
j = Count (2, 3)
add = j.add ()
assert (add == 4), "Interger addition result error!"
except AssertionError as msg:
print(msg)
else:
print('Test pass!') # 执行测试类的测试方法
mytest = TestCount ()
mytest.test_add ()

首先引入calculator文件中的Count类,然后再test_add()方法中调用Count类并传入两个参数2和3;最后调用Count类中的add()方法对两个参数做加法运算,并通过asssert()方法判断add()的返回值是否等于5.如果不相等则抛出自定义“Integer addition result error!”异常信息,如果相等则打印“Test pass!”

注:很容易发现,该代码没有遵循一定的规范,导致维护成本很大。并且需要编写大量的辅助代码才能进行单元测试。为了让单元测试更容易维护和编写,最好的方式是遵循一定的规范来编写测试用例,这也是单元测试框架诞生的初衷。

 from calculator import Count
import unittest class TestCount (unittest.TestCase): def setUp(self):
print("test start") def test_add(self):
j = Count (2, 4)
self.assertEqual (j.add (),6) def tearDown(self):
print("test end") if __name__ == '__main__':
unittest.main ()

上面的代码分析如下:

1.首先引入unittest模块,创建TestCount类继承unittest的TestCase类,TestCase类可以看成对特定类进行测试的集合。

2.setUp()方法用于测试y用例执行的初始化工作,tearDown()方法与setUp方法相呼应。

3.在test_add()中首先调用Count类并传入要计算的数,通过调用add()方法得到两个数相加的返回值。可以不用使用异常处理,而是直接调用unittest框架提供的assertEqual()方法对add()的返回值进行判断,判断两者是否相等,assertEqual()方法由TeCase类继承

4.unittest提供了全局的main()方法,使用它可以方便的将一个单元测试模块变成可以直接运行的测试脚本。main()方法使用TestLoader()类来收缩所有包含在该模块中以“test”命名开头的测试方法,并执行它

if__name__ == "__main__"语句介绍:
1.Python文件的后缀为.py
2..py文件既可以用来直接执行,也可以用来作为模块被导入。
3.在Python中导入模块一般使用的是import
4.if表示该语句为条件语句。__name_作为模块的内置属性(注,是双下划线),简单的说就是.py文件的调用方式。.py文件有两种调用方式,一种是作为模块进行调用,另外一种是直接调用。__main__表示直接调用

Python + selenium之unitest(1)的更多相关文章

  1. Python + selenium之unitest(2)

    unittest单元测试框架中重要的概念: 1.Test Case 一个Test Case实例就是一个测试用例.在一个完整的测试流程中,包括测试前准备环境的搭建(setUp),实现测试过程的代码(ru ...

  2. python+selenium 浏览器的问题

    以前用selenium调用firefox是不需要驱动的,最近安装了python3.52+最新的firefox 发现调不起来了 搜索以后发现Firefox 47+需要搞个firefox的驱动 gecko ...

  3. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  4. Python + Selenium 实现登录Office 365

    最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...

  5. python+selenium+Robot

    准备工作: 1.下载python2.7 http://python.org/getit/ 2.下载下载setuptools [python 的基础包工具] 可以帮助我们轻松的下载,构建,安装,升级,卸 ...

  6. python+selenium运行报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    使用python+selenium运行自动化脚本时,打印某一段文字出现UnicodeEncodeError: 'ascii' codec can't encode characters in posi ...

  7. Functional testing - python, selenium and django

    Functional testing  - python selenium django - Source Code : from selenium import webdriverfrom sele ...

  8. python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  9. 使用python selenium进行自动化functional test

    Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...

随机推荐

  1. PHP生成唯一的订单号

    记:之前面试的时候被面试官问过简历项目中的订单号我是什么规则生成的,我牛逼吹过头了,乱说了一通,靠!今天在公司的项目中订单号生成,好奇,看了下,就是网上的这种而已. * * uniqid - 官方是这 ...

  2. Gym - 100801H Hash Code Hacker (构造)

    题意:求 n 个哈希值相同的串. 析:直接构造,通过取模来查找相同的串. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400000 ...

  3. UVa 10534 Wavio Sequence (LIS+暴力)

    题意:给定一个序列,求一个最长子序列,使得序列长度为奇数,并且前一半严格递增,后一半严格递减. 析:先正向和逆向分别求一次LIS,然后再枚举中间的那个数,找得最长的那个序列. 代码如下: #pragm ...

  4. Linux系统下使用split命令分割大文件 (转载)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://snailwarrior.blog.51cto.com/680306/140531 ...

  5. SQL Server(四)——查询练习(45道习题)转

    题目:设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher). 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1 ...

  6. MyCat - 使用篇(5)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 意思就是,开头为北京的范围在A0000000~A9999999的根据后面的哈希值对5取模平均分布在0,1,2 ...

  7. [poj]开关类问题 枚举 位运算

    poj 1222  EXTENDED LIGHTS OUT 开关只有两种方案 按和不按,按两次相当于关 只用枚举第一排开关的按法即可,剩下的行为使上一排的灯全部关闭,按法可以确定,并且是唯一的. 最后 ...

  8. 洛谷P2814 家谱

    P2814 家谱 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系 ...

  9. HTML5----前段各种常见BUG

     1.在IE6下,DIV中的字会多出,并且自成一行,而且是原来的字. 这是注释bug,经典的ie6 bug.    说明:注释造成文字溢出是IE6的BUG,注释造成文字溢出与其位置有关,注释造成文字溢 ...

  10. BZOJ 1899&&luogu P2577: [Zjoi2004]Lunch 午餐 贪心+DP

    贪它,再大力DP(话说觉得此题简单的真的是大佬QAQ)我想了两天...QWQ 贪心:吃饭慢的先打饭(不太会证...) DP:f[i][j]表示前i个人,在1号窗口打饭的总时间时j,的最短时间 确定i的 ...