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
应该可以正常工作了。
我尝试使用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
应该可以正常工作了。