Python 2.7 简化“if”语句的长列表

Python 2.7 简化“if”语句的长列表,python-2.7,Python 2.7,对于我正在测试的应用程序,我有很多页面对象。页面对象具有页面上的所有元素。我正在为每个页面对象编写一个validate\u fields方法,这样当另一个测试人员导航到该页面时,他们可以调用这个validate\u fields方法来验证页面上应该存在的所有项目实际上都在页面上 我遇到的问题是,这个validate\u fields函数可能非常长,它只是一堆 if not x.is_displayed(): self.problems.append("The item X is miss

对于我正在测试的应用程序,我有很多页面对象。页面对象具有页面上的所有元素。我正在为每个页面对象编写一个
validate\u fields
方法,这样当另一个测试人员导航到该页面时,他们可以调用这个
validate\u fields
方法来验证页面上应该存在的所有项目实际上都在页面上

我遇到的问题是,这个
validate\u fields
函数可能非常长,它只是一堆

if not x.is_displayed():
    self.problems.append("The item X is missing from the page")
问题是我们在测试结束时断言为空的问题列表

下面是一个代码示例,有没有简化的方法

def validate_fields(self):
    if not self.el_page_header.is_displayed():
        self.problems.append("The Page Header is missing")
    if not self.el_preferred.is_displayed():
        self.problems.append("The Preferred check box is missing")
    if not self.el_address.is_displayed():
        self.problems.append("The Address 1 field is missing")
    if not self.el_address_2.is_displayed():
        self.problems.append("The Address 2 field is missing")
    if not self.el_address_3_city.is_displayed():
        self.problems.append("The Address 3 City field is missing")
    if not self.el_address_4_state.is_displayed():
        self.problems.append("The Address 4 State field is missing")
    if not self.el_address_5_zip_code.is_displayed():
        self.problems.append("The Address 5 Zip Code field is missing")
    if not self.el_contact.is_displayed():
        self.problems.append("The Contact field is missing")
    if not self.el_phone.is_displayed():
        self.problems.append("The Phone field is missing")
    if not self.el_phone_ext.is_displayed():
        self.problems.append("The Phone Extension field is missing")
    if not self.el_fax.is_displayed():
        self.problems.append("The Fax number field is missing")
    ...

您可以将所有这些小部件及其人类可读的名称放入一个列表中:

def validate_fields(self):
    widgets = [(self.el_page_header, "Page Header"),
               (self.el_preferred, "Preferred check box"), 
               ... and many more... ]
    for widget, name in widgets:
        if not widget.is_displayed():
            self.problems.append("The %s is missing" % name)

工作做得很好,非常感谢。当然,我的页面对象清理了很多。