【发布时间】:2021-03-06 18:51:20
【问题描述】:
我正在测试一个 API,并且是:
@app.route("/my-api/<token>", methods=["GET", "POST"])
def get_url(token):
s = TimedJSONWebSignatureSerializer("KEY")
try:
url = s.loads(token)
except:
abort(400, "URL not identified")
head, tail = ntpath.split(url)
head = head + "/"
filename = ntpath.basename(url)
return send_from_directory(directory=head, filename=filename), 201
和这样的单元测试:
class BasicTests(unittest.TestCase):
def setUp(self):
self.test_token1 = "eyJhbGciOiJIUzUxMiIsImlhdCI6MTYxNTA1NTA4NSwiZXhwIjoxNjE1MDc1MDg1fQ.InRlc3Qi.Nm37UI69YrvPdcKyr0iAOKY_m1AmqknydosWaJcuULxfxJcrVxTsXQor60nZjH0EBb3zWemD8LMKM1rzIdxf9B"
self.test_token2 = "abc123"
def test_get_url_201(self):
with app.test_client() as client:
response = client.get(
f"/my-api/{self.test_token1}"
)
print(f"RESPONSE: {response}")
assert response.status_code == 201
def test_get_url_400(self):
with app.test_client() as client:
response = client.get(
f"/my-api/{self.test_token2}"
)
assert response.status_code == 400
def test_201(self):
with unittest.mock.patch("flask.send_from_directory") as mocked:
mocked.return_value = "Test Mock"
response = app.test_client().get(f"/my-api/{self.test_token1}")
print(response)
self.assertTrue(mocked.called)
assert response.status_code == 201
我试图让 api 返回 201 的 status_code,但我得到了 404。我哪里出错了?
编辑:前两个测试是集成测试。添加了单元测试test_201。两个断言都失败:
【问题讨论】:
标签: python api flask python-unittest