Я использовал responses
в Python для возврата кодов ответов и т. Д. При издевательстве в некоторых моих тестах.
Теперь я хочу провести тест, в котором я делаю PUT
с некоторыми определенными пользовательскими заголовками, и если они были получены с помощью макета, я бы хотел включить их в ответ, а если нет, то их нет в ответе. Это возможно, и если да, то как это делается?
Дополнительная информация
Я думаю, что мне нужно настроить фиктивный сервер и поразить его моим PUT
, а не реальным сервером. Я использую Python 2.7.8, так что думаю, что это должно быть сделано с SimpleHTTPServer. Что мне нужно сделать, так это чтобы мой тест запустил сервер в отдельном потоке, чтобы мой PUT
нажал на него, и оттуда проверьте сообщение, которое фиктивный сервер получает для моих заголовков.
Я пытаюсь приспособить это , но я не совсем уверен, как это сделать. Любая помощь будет оценена.
Я вижу, как запускается мой фиктивный сервер, но когда я делаю 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, поэтому я добавил этот класс в свою программу:
Когда я выполняю 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'