如果我使用coverage运行测试,则硒测试失败。如果我使用python manage.py test ...
运行它们,则此测试通过。
我有一个测试套件,包括一些普通的python / django测试以及一些使用Selenium的测试。 CustomWebDriver()是selenium.webdriver.firefox.webdriver的子类。
class WebDriverITTTests(LiveServerTestCase, Someothermixins):
@classmethod
def setUpClass(cls):
cls.webdriver = webdriver.CustomWebDriver()
super(WebDriverITTTests, cls).setUpClass()
def test_instructions_logic(self):
...
login, check that some things happened on the server side
open a page, check for "#some_element" loaded via ajax
...
我在覆盖范围内运行时test_instructions_logic
测试失败,因为它无法找到"#some_element"
。
覆盖率命令:coverage run --source mymodule.subapp manage.py test mymodule.subapp --settings myproj.settings
Manage.py命令:python manage.py test mymodule.subapp --settings myproj.settings
为什么这两种情况下的测试结果不同?
答案 0 :(得分:1)
我明白了。我使用this作为参考,问题是......
wait_for_css()
方法。 (我确实使用了这种方法)。manage.py
测试运行器和coverage test
之间的差异可能是由于时间 - 如果我在检查元素之前添加了time.sleep(2),则测试将在两种情况下通过wait_for_css
方法不能阻止这个问题?因为我天真地创建了NoSuchElementException
,就像
class NoSuchElementException(Exception)
pass
而不是导入它:from selenium.common.exceptions import NoSuchElementException
(因此来自链接的find_css
方法引发了与Selenium期望的不同的异常,并且失败并退出而不是等待。
Oy公司。