使用nas2为烧瓶应用程序创建测试

时间:2019-12-20 08:07:08

标签: python flask postman python-unittest nose2

我有一个可以运行的烧瓶应用程序(已通过邮递员测试)。

当我在存储库中尝试使用Travis和CI时,我正在为此编写单元测试,我使用了鼻子2。

我编写的测试类是这样:

import unittest
import requests
from myapp import app


class ProjectTests(unittest.TestCase):

    ############################
    #### setup and teardown ####
    ############################

    # executed prior to each test
    def setUp(self):
        app.config["TESTING"] = True
        app.config["DEBUG"] = False
        self.app = app.test_client()

        self.assertEquals(app.debug, False)

    # executed after each test
    def tearDown(self):
        pass

    ########################
    #### helper methods ####
    ########################

    ###############
    #### tests ####
    ###############

    def test_main_page(self):
        response = self.app.get("/", follow_redirects=True)
        # self.assertIn(b"Hello World!", response.data)
        # response = app.test_client().get('/')

        assert response.status_code == 200
        # print(response.data)
        assert response.data == b"Hello, world!"

    def test_register(self):
        # import requests

        url = "http://127.0.0.1:5000/register"

        payload = '{\n\t"username": "bruno",\n\t"password": "asdf"\n}\n'
        headers = {"Content-Type": "application/json"}

        response = requests.request("POST", url, headers=headers, data=payload)

        # print(response.text.encode("utf8"))
        print(response.json()["message"])
        assert response.status_code == 400  # user already exists
if __name__ == "__main__":
unittest.main()

如果我运行该应用程序,然后复制并粘贴test_register方法,即

import requests
url = "http://127.0.0.1:5000/register"

payload = '{\n\t"username": "bruno",\n\t"password": "asdf"\n}\n'
headers = {"Content-Type": "application/json"}

response = requests.request("POST", url, headers=headers, data=payload)

# print(response.text.encode("utf8"))
print(response.json()["message"])

一切都很好。如果我运行鼻子2并且收到连接被拒绝的错误,它将失败。 如果我评论了test_register方法,则鼻子2运行正常。我认为我对两种测试的实施方式有所不同。

有关如何解决此问题的帮助吗?

0 个答案:

没有答案