python中multi-if期间返回响应

2024-09-30 22:12:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个unit testing,我在检查两个数据库集合中的字段,所以在这期间我必须做一个multi-if条件,比如:

for doc1,doc2 in itertools.izip(docs1, docs2):
    if ... :
        if ... :
            response = 'Error'
        else:
            response = 'OK'
    else... :
        if ... :
            response = 'Error'
        else:
            response = 'OK'
    if ... :
        if ... :
            response = 'Error'
        else ... :
            response = 'OK'
    else ... :
        if ... :
            response = 'Error'
        else ... :
            response = 'OK'

因此,如果错误发生在其中一个ifs中,我想断言一个响应,给出如下答案: self.assert400(response, message="Bad request, empty body.")

当整个过程正常时,我们会给出一个正常的回答。你知道吗

我只想避免写这个:

     if ... :
            if ... :
                self.assert400(response, message="Bad request, empty body.")
            else:
                self.assert200(response, message="OK.")
     else... : 
            if ... :
                self.assert400(response, message="Bad request, empty body.")
            else:
                self.assert200(response, message="OK.")

那么,如何实现这一点呢?你知道吗

我想在它的末尾创建一个if条件,但这不会停止for循环吗?请帮帮我?你知道吗


Tags: selfmessageforifresponserequestbodyok
2条回答

在这种情况下,您应该考虑使用默认值并只检查错误情况:

response = "OK" # default value

for doc1,doc2 in itertools.izip(docs1, docs2):
    if ... :
        if ... :
            response = "Error"
    else... :
        if ... :
            response = "Error"

    if response == "Error":
        break

# If no errors were found, then the result must be OK
if response == "Error":
    self.assert400(response, message="Bad request, empty body.")
else:
    self.assert200(response, message="OK.")

这就使得只有一个错误就足以使整个事情失败。我有点不清楚你到底想做什么,所以做评论,如果这不是你所期望的。你知道吗

在我看来,您并不是真正的单元测试。函数和单元测试中的结构完全相同。因此,如果您的代码更改,测试也必须更改。我认为测试“=”操作符不值得你花时间。你知道吗

我可能错了,但我认为你应该有一个函数,获取doc1和doc2并返回一个响应。然后对特定输入值的返回值进行单元测试。像这样:

result = foo(doc1,doc2)
self.assert_equal(result.message, "Bad request, empty body.")
result = foo(doc3,doc4)
self.assert_equal(result.message, "OK.")

一般来说,让你的代码“单元可测试”会更好。你知道吗

相关问题 更多 >