在某些测试中进行模拟时,我已经在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'