python接口测试记录

1.1 unittest framework

   在学习Django单元测试之前,我们先来学习一下unittest单元测试框架。首先,更新一个误区,单元测试框架不单单只适用于程序单元级别的测试。

   一般单元测试框架主要完成以下几件事儿:

   提供用例组织与执行:当你的测试用例只有几条时,可以不用考虑用例的组织,

但是,当测试用例达到成百上千条时,大量的测试用例堆砌在一起,就产生了扩展性与维护性等问题,需要考虑用例的规范与组织问题了。单元测试框架就是用来解决这个问题的。

提供丰富的比较方法:不论是功能测试,还是单元测试,在用例执行完成之后都需要将实际结果与进行预期结果的进行比较(断言),从而断定用例是否执行通过。所以,作为单元测试框架一般也会提供丰富的断言方法。例如,判断相等/不等、包含/不包含、Trure/False 的断言方法等。

提供丰富的日志:当测试用例执行失败时能抛出清晰的失败原因,当所有用例执行完成后能提供丰富的执行情况结果信息。例如,总执行时间、失败用例数、成功用例数等。

从这几点来看,单元测试框架可以帮助我们完成任何级别测试的自动化。  

unittest                                                                              

HTTP 接口自动化测试:unittest + Requests

Web UI 自动化测试:unittest + Selenium

移动自动化测试:unittest + Appium

例如,开发一了个简单的计算器,用于两个数的加、减、乘、除,功能代码如下。

 

'''


 

Date:          2016/8/15 Describe:实现简单计算器:+、-、*、/、'''

 

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

 

 

首先,需要说明的是,不用单元测试框架一样可以做单元测试。使用单元测试框架来做单元测试的优点是由测试更加规范和简单。回顾前面关于单元测试框架所完成的几件事。

那么,通过 unittest 单元测试框架如何编写测试用例。

 

import unittest

from count import Calculator

 

 

 

class CountTest(unittest.TestCase):


 

 

def setUp(self):

self.cal = Calculator(8, 4)

 

def tearDown(self): pass

 

def test_add(self):

result = self.cal.add() self.assertEqual(result,12)

 

def test_sub(self):

result = self.cal.sub() self.assertEqual(result,4)

 

def test_mul(self):

result = self.cal.mul() self.assertEqual(result,32)

 

def test_div(self):

result = self.cal.div() self.assertEqual(result,2)

 

 

if  name  == " main ": #unittest.main()      # 构造测试集

suite = unittest.TestSuite() suite.addTest(CountTest("test_add")) suite.addTest(CountTest("test_sub")) suite.addTest(CountTest("test_mul")) suite.addTest(CountTest("test_div"))

# 执行测试

runner = unittest.TextTestRunner() runner.run(suite)

 

首先从感官上来看,通过 unittest 单元测试框架编写测试用例更加规范和整洁。接下来,分析一下 unittest


单元测试用例。

 

首先,通过 import 导入 unittest 单元测试框架。创建 CountTest 类继承 unittest.TestCase 类。

setUp() tearDown()在单元测试框架中比较特别,它们分别在每一个测试用例的开始和结束执行。setUp() 方法用于测试用例执行前的初始化工作,例如初始化变量、生成数据库测试数据、打开浏览器等。tearDown()       方法与 setUp()方法相呼应,用于测试用例执行之后的善后工作,例如清除数据库测试数据、关闭文件、关闭浏览器等。

unittest 要求测试方法必须以“test”开头。例如,test_add、test_sub 等。

 

接下来,调用 unittest.TestSuite()类中的 addTest()方法向测试套件中添加测试用例。简单的可以将测试套件理解成运行测试用例的集合。

通过 unittest.TextTestRunner()类中的 run()方法运行测试套件中的测试用例。

 

如果想默认运行当前测试文件下的所有测试用例,可以直接使用 unittest.main()方法。那么 main()方法在查找测试用例时按照两个规则。首先,该测试类必须继承 unittest.TestCase 类;其次,该测试类下面的方法必须以“test”开头。

最后,执行结果如下:

 

> python3 test_count.py

....

----------------------------------------------------------------------

Ran 4 tests in 0.001s

 

OK

 

 

从执行结果可以看到通过一个小点“.”来表示一条运行通过的用例,总共运行 4 条测试用例,用时 0.001

秒。

 

关于 unittest 单元测试框架的讲解,我在《Selenium2 自动化测试实战--基于 Python 语言》一书中做了详细的介绍,读者可以参考此书来学习。另外,Python 官方文档也是非常不错的参考资料,如图 6.1


6.1   unittest 官方文档

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值