asserTtrue() 封装后总是失败

asserTrue() alwasys fail after encapsulation

我尝试使用python3.7 + appium + unittest 构建一个简单的自动化测试框架。我遇到了一个问题,即在将整个断言函数封装到另一个 python 脚本后,我的测试用例脚本总是在 asserTrue() 处失败。此断言用于检查当前屏幕是否包含用户所需的文本。 我的测试用例脚本如下:

......
class Test1(unittest.TestCase):
@classmethod
def setUpClass(self):
    print("execute setUpClass")

@classmethod
def tearDownClass(self):
    print("execute tearDownClass")

def test_demo(self):
    time.sleep(1)
    try:
        assert_text = driver.find_element_by_android_uiautomator('new UiSelector().text("WLAN")')
    except Exception as e:
        assert_text = False
    self.assertTrue(assert_text,'Fail to find text "WLAN"')

文本 "WLAN" 作为元素在当前屏幕上占 100%。上面的代码可以 运行 成功与失败。但是在我将以下部分作为函数放入另一个脚本后,它总是会得到

AssertionError: False is not true : Fail to find text "WLAN"

        try:
            assert_text = driver.find_element_by_android_uiautomator('new UiSelector().text("WLAN")')
        except Exception as e:
            assert_text = False
        self.assertTrue(assert_text,'Fail to find text "WLAN"')

封装脚本assert_zsq.py是这样的:

def Verify_Text(self,req_text):
try:
    assert_text = driver.find_element_by_android_uiautomator('new UiSelector().text("{0}")'.format(req_text))
except Exception as e:
    assert_text = False

self.assertTrue(assert_text,'Fail to find text "{0}"'.format(req_text))

同时将测试用例脚本主要操作更改为:

    def test_demo(self):
    time.sleep(1)
    Verify_Text(self,'WLAN')

知道为什么 asserTrue() 总是在封装后失败,即使屏幕上显示了所需的文本吗?提前致谢!

assertTrue() 方法需要 True 或 False,但 find_element_by_android_uiautomator 没有返回 True 或 False,而是 MobileWebElement.

你可以试试:

assert_text = driver.find_element_by_android_uiautomator('new UiSelector().text("WLAN")').is_displayed()

is_displayed() returns 正确或错误,取决于它是否能够定位元素。

现在 assert_text 应该可以正常工作了。