python - 使用 Python WebTest 进行功能测试

标签 python pyramid webtest

我完全不熟悉使用 Python WebTest 进行功能测试,请多多包涵

我在看 https://webtest.readthedocs.org/en/latest/webtest.html , 所以我尝试了建议的代码来发出请求:

    app.get('/path', [params], [headers], [extra_environ], ...)

好的,对我来说看起来很简单。我在 myapp 文件夹中创建了一个名为 test_demo.py 的文件:

    from webtest import TestApp

    class MyTests():
        def test_admin_login(self):
           resp = self.TestApp.get('/admin')
           print (resp.request)

现在这就是我遇到的问题,我应该如何运行这个 test_demo.py? 我试过输入 bash

    $ bin/python MyCart/mycart/test_demo.py test_admin_login

但它没有显示任何结果。

我敢打赌我一定是出了什么问题,但是文档帮不上什么忙,或者我的速度太慢了。

最佳答案

糟糕,您错过了一些步骤。

您的程序没有做任何事情,因为您没有告诉它做任何事情,您只是定义了一个类。所以让我们告诉它做点什么。我们将使用 unittest包使事情更加自动化。

import unittest
from webtest import TestApp

class MyTests(unittest.TestCase):
    def test_admin_login(self):
       resp = self.TestApp.get('/admin')
       print (resp.request)

if __name__ == '__main__':
    unittest.main()

运行它,我们看到:

E
======================================================================
ERROR: test_admin_login (__main__.MyTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_foo.py", line 6, in test_admin_login
    resp = self.TestApp.get('/admin')
AttributeError: 'MyTests' object has no attribute 'TestApp'

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

好的,所以我们需要一个应用程序来测试。去哪里买?您通常需要通过 config.make_wsgi_app()main 中创建的 WSGI 应用程序。最简单的方法是加载它,就像 pserve development.ini 在您运行应用程序时所做的那样。我们可以通过 pyramid.paster.get_app() 来做到这一点。

import unittest
from pyramid.paster import get_app
from webtest import TestApp

class MyTests(unittest.TestCase):
    def test_admin_login(self):
        app = get_app('testing.ini')
        test_app = TestApp(app)
        resp = test_app.get('/admin')
        self.assertEqual(resp.status_code, 200)

if __name__ == '__main__':
    unittest.main()

现在所需要的只是一个与您的 development.ini 类似的 INI 文件,但用于测试目的。您可以只复制 development.ini,直到您需要设置任何仅用于测试的设置。

希望这能给您一个起点,让您了解更多关于 unittest 包的信息。

关于python - 使用 Python WebTest 进行功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15250276/

相关文章:

python - torch.argmax() 无法在包含数据的张量中找到最大值

python - 将包添加到 AWS lambda 中的现有层

python - 检查 HTTP POST 的大小而不保存到磁盘

python - PyPugJs 与 Pyramid - 基础

c# - Visual Studio Web 测试 api 请求失败 'Invalid HTTP header characters'

python - 为 Pyramid Web 应用程序编写文档测试,该应用程序取决于 ini 文件中的设置

visual-studio-2010 - 带有用户登录的 VS2010 Web 负载测试

python - 将值追加到列表中而不对python进行排序,保持追加顺序

frameworks - 在 Pyramid 中的表单 View 之间传递数据

python - 如何使用python通过ip地址连接mysql?