上一篇博客,介绍了如何使用python的urllib和urllib2去请求api,其实我们的最终目的是做接口测试,所以这一篇会介绍一下如何引入unittest,完成接口的自动化测试。
unittest这个自动化测试框架就不专门在这篇blog里展开介绍了,以后有时间再补写,下面直接上代码+注释(以post方法为例):
#-coding:UTF8-*-
import unittest
import urllib2,urllib
class TestCode(unittest.TestCase):
def setUp(self): # 把所需要的一些初始准备数据全都在setUp写好
self.url = 'https://api.douban.com/v2/book/user/ahbei/collections'
self.data = data={'status':'read','rating':3,'tag':'小说'}
self.data = urllib.urlencode(self.data)
self.url2 = urllib2.Request(self.url,self.data)
self.response = urllib2.urlopen(self.url2)
self.api_content = self.response.read()
self.content_json = eval(self.api_content) # read()返回的结果是str,不方便操作,使用eval()函数先转成dict
def test_code(self):
book_count = self.content_json.get('total')
self.assertEqual(book_count,1)
# 第一条case,使用assertEqual判断返回的json中,total字段值是否为1
def test_token(self):
self.assertTrue(self.content_json.has_key('count'))
# 第二条case,使用assertTrue判断返回的json是否有‘count’这个字段
# 可以继续加第三条,第四条case…………………………
def tearDown(self):
pass# 暂时没有什么好写,直接填个pass
if __name__ == '__main__':
unittest.main()
执行以上代码后,可以看到如下结果:说明两条case都pass了
..
----------------------------------------------------------------------
Ran 2 tests in 0.820s
OK
其实基本思想跟功能测试是一样的,只不过功能测试我们一般使用selenium相关的库,而接口使用的是urllib和urllib2,相关学习网址: