【问题标题】:How to return data from selenium to calling function in python如何将数据从硒返回到python中的调用函数
【发布时间】:2014-02-14 02:29:40
【问题描述】:

我正在使用 django 函数内部使用鼻子运行硒功能测试:

arg = sys.argv[:1]
arg.append('--verbosity=2')
arg.append('-v')
out = nose.run(module=ft1.testy1, argv=arg, exit=False)

我已经使用 selenium IDE 创建了功能测试。部分测试如下:

class y1(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "https://www.yahoo.com/"
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_y1(self):
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_link_text("Weather").click()
        driver.save_screenshot('out1.png')
        return " this is a returned value"

我想向调用函数返回一个字符串值(“这是一个返回值”)。我该怎么做?

【问题讨论】:

    标签: python django selenium nose


    【解决方案1】:

    nose.run() 的输出与您的测试方法不对应。 unittest.TestCase 的默认行为是抛出异常。如果您想向外部代码发出一些特定细节的信号,您始终可以通过全局/类变量、文件等来完成。

    例如,这是使用类变量 (results) 的方法

    ft1_runner.py:

    import nose
    
    import ft1_test
    
    if __name__ == '__main__':
        out = nose.run(module=ft1_test, exit=False)
        print 'Y1.test_y1 test results returned:', ft1_test.Y1.results['test_y1']
    

    ft1_test.py:

    import unittest
    
    class Y1(unittest.TestCase):
        results = {}
    
        def test_y1(self):
            Y1.results['test_y1'] = "this is a returned value"
    

    我认为如果您能描述您要解决的问题会有所帮助:这似乎有点尴尬且容易出错(如果测试被调用两次,或者测试被跳过等等)

    【讨论】:

    • 感谢您关注这个 Oleksiy。我对 python 很陌生,所以我可以询问有关如何执行此操作的更多详细信息,假设我想让字符串“这是一个返回值”可用于调用函数。
    • 添加了一个代码示例,但有助于查看您要解决的实际问题。
    • 谢谢,这有帮助。我假设“results = {}”将是一个全局变量?
    • 是的,任何提到 Y1 班级的人都可以看到results.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2011-01-25
    • 2013-10-26
    • 2020-06-29
    相关资源
    最近更新 更多