宝玛科技网
您的当前位置:首页单元测试unnittest——tornadoAsyncHTTPTestCase

单元测试unnittest——tornadoAsyncHTTPTestCase

来源:宝玛科技网
单元测试unnittest——tornadoAsyncHTTPTestCase

最近有⼀个单元测试的任务,要对tornado实现的服务进⾏测试,初始考虑Test_Main类继承unittest.TestCase,然后使⽤多进程起服务,再在服务⾥⾯测试

import unittest

from multiprocessing import Processdef func():

#起服务的函数

class TestMain(unittest.TestCase): def test_server(self):

p_server = Process(target=func,args=()) p_server.start() time.sleep(10) sun = p_server.pid

data = json.dumps(data)

r = requests.post(url,data=data)

self.assertEqual(r.json(), \"hello world!\")if __name__ == '__main__': unittest.main()

后来发现这样写有问题,nosetests⽆法对多进程给出测试结果。

经过查阅资料,发现tornado⾃带有单元测试的⽅法,并且这个⽅法是继承unittest.TestCase的,所以问题迎刃⽽解。参考⽂档: ;具体代码如下:

from tornado.testing import AsyncHTTPTestCaseimport unittest

class TestTornado(AsyncHTTPTestCase): def get_app(self):

app = MyApplication([

(r'/test', BaseHandler(需要启的服务)), ])

return app

def test_BaseHandler(self): # 测试正常输⼊⽂本

data = json.dumps({\"text\": \"\

response = self.fetch(\"/test\ self.assertEqual(eval(response.body)[\"data\"], \"test\") self.assertEqual(eval(response.body)[\"code\"], 200)if __name__ == '__main__': unittest.main()

附上nosetest的脚本写法

⾸先要安装 pip install nose-cov脚本:#!/bin/bash

nosetests --with-cov --cov-report term --cov-report html --cov . test/

这样运⾏脚本就把test⽬录下所有的单元测试⽂件全部测试⼀遍,⽣成测试结果在htmlcov⽬录下,从htmlcov/index.html进⼊

因篇幅问题不能全部显示,请点此查看更多更全内容