首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在一系列浏览器上运行所有测试?

如何在一系列浏览器上运行所有测试?
EN

Stack Overflow用户
提问于 2019-09-17 18:57:13
回答 2查看 125关注 0票数 0

我正在使用python-behave编写一个测试套件,并希望对一系列platforms-browsers-browserversions运行我的测试。

到目前为止,我尝试的是将变量从一个特征传递到另一个步骤定义,这对于一个场景来说是完美的。这就是我是如何做到的。

代码语言:javascript
运行
复制
Feature: Test Main Page 

  Scenario Outline: Test Button with <browser>
    Given I go to main page with "<platform>""<Browser>""<BrowserVersion>"
    Then I can see Fahrzeug finden Button

    Examples: Browsers
        | platform        | Browser | BrowserVersion  |
        | Windows 10      | Chrome  | 76.0            |

我想要做的是构建一个platforms-browsers-..列表,并将其与所有测试或部分测试一起使用。所以这个列表应该对所有的测试都是可访问的。一种可能的解决方案是编写一个运行所有步骤的宏功能,这意味着我每次都必须运行所有测试!

EN

回答 2

Stack Overflow用户

发布于 2019-09-20 02:44:33

继续我们的评论,我可以看到两种方法来实现你的目标:

使用标签

您可以利用标签并从scenario objects访问它们。您需要注意的是:

这对于我们接下来要做的事情非常重要。有一个关于如何用标签控制东西的教程,可以在here上找到,但一般的想法是让你的场景文件结构如下:

代码语言:javascript
运行
复制
@Windows10_Chrome_76.0
@Windows10_Firefox_68.0
Scenario Outline: Test Button with the browser
    Given I go to main page with the browser
    Then I can see Fahrzeug finden Button

environment.py中,您将拥有:

代码语言:javascript
运行
复制
def before_scenario(context, scenario):      
    for tag in scenario.tags:
        (platform, browser, browserVersion) = tag.split('_')

        if browser == "Chrome":
            # Initialize the browser with platform, browser, etc.
            context.browser = WebDriver.Chrome()
        elif browser == "Firefox":
            # Initialize the browser with platform, browser, etc.
            context.browser = WebDriver.Firefox()

在您的steps文件中,您将可以访问浏览器:

代码语言:javascript
运行
复制
@given(u'I go to main page with the browser')
def step_impl(context)
    context.browser.get('https://yourUrl.com')

根据您的看法,缺点或好处是每个场景都需要使用platform-browser-browserVersion进行标记,这有点麻烦。但主要的好处是,您可以更多地控制在哪个浏览器上进行测试。

使用一个类

您可以拥有某种浏览器处理类,比如BrowserHandler单例。但是,使用这种方法会忽略Python Behave的好处,所以我建议您这样做。

票数 0
EN

Stack Overflow用户

发布于 2019-09-22 20:08:19

如果我理解正确的话,您基本上希望有一个参数化的测试套件,基于浏览器、browser.version等运行许多测试(功能/场景),并且您希望为上面的每个参数组合运行它。

潜在的解决方案:

  • 通过浏览器等进行迭代的外部自动化,并通过使用用户数据参数作为测试运行的上下文,为每次迭代运行behave -D browser=$CURRENT_BROWSER -D browser_version=$CURRENT_BROWSER_VERSION ...
  • 内部自动化:使用behave功能文件作为自动化脚本,类似于上面的方法,但它需要一个类似于When I run "behave -D browser=<Browser> -D browser_version=<BrowserVersion> ...more_here的步骤,通过使用上面的ScenarioOutline (意思是类似的步骤)

提示:

  • 外部自动化使用“构建脚本”(shell脚本、makefile、invoke任务等)要运行behave次,对每个参数运行一次combination
  • Internal自动化是一种两阶段的方法。您可以使用STAGE_1中的特征文件来运行behave和STAGE_2中的许多其他特征文件。STAGE_2基本上就是执行上面ScenarioOutline的examples表中的一行。STAGE_1基本上就是运行STAGE_2的跳床。

另请参阅:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57972791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档