创建一个模拟,如果该模拟接收到标头,则该模拟将被拒绝

时间:2019-03-06 17:58:09

标签: python testing mocking simplehttpserver python-responses

在某些测试中进行模拟时,我已经在Python中使用responses返回响应代码等。

我现在想做一个测试,在其中我使用一些特定的自定义标头进行PUT,如果模拟接收到它们,我想将它们包括在响应中,如果不是,则不在响应中。响应。这可能吗?如果可以,怎么做?

其他信息

我认为我需要做的是设置一个模拟服务器,然后用我的PUT而不是真实的服务器击中它。我使用的是Python 2.7.8,因此认为应该使用SimpleHTTPServer完成。我需要做的是让我的测试在一个单独的线程中启动服务器,让我的PUT达到目标,然后从那里检查模拟服务器收到的标头消息。

我正在尝试改编this,但不完全确定应如何做。任何帮助将不胜感激。

我可以看到我的模拟服务器正在启动,但是当我执行PUT时,会收到以下响应:

<head>
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code 501.
<p>Message: Unsupported method ('PUT').
<p>Error code explanation: 501 = Server does not support this operation.
</body>

SimpleHTTPServer不支持PUT,因此我在程序中添加了this类:

在测试中执行server.test(HandlerClass=HTTPRequestHandler)时,出现此错误:

Traceback (most recent call last):
  File "<string>", line 3, in wrapper
  File "/Users/me/git/config_test/test_config.py", line 512, in test_headers
server.test(HandlerClass=HTTPRequestHandler)
  File "/Users/me/.pyenv/versions/2.7.8/lib/python2.7/SimpleHTTPServer.py", line 226, in test
    BaseHTTPServer.test(HandlerClass, ServerClass)
  File "/Users/me/.pyenv/versions/2.7.8/lib/python2.7/BaseHTTPServer.py", line 589, in test
    port = int(sys.argv[1])
ValueError: invalid literal for int() with base 10: 'config_test.test_config:TestConfig.test_headers'

0 个答案:

没有答案