首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Rails Rspec Docker环境中启用事务性fixture时,Selenium Chrome看不到数据库更改

在Rails Rspec Docker环境中启用事务性fixture时,Selenium Chrome无法看到数据库更改的原因是因为Selenium Chrome运行在一个独立的浏览器环境中,无法直接访问到Rails应用程序的数据库。

解决这个问题的方法是使用DatabaseCleaner gem来清理数据库,并确保在测试运行期间正确配置和管理数据库事务。

以下是解决该问题的步骤:

  1. 在Gemfile中添加DatabaseCleaner gem的依赖:
代码语言:txt
复制
group :test do
  gem 'database_cleaner'
end
  1. 在rails_helper.rb文件中配置DatabaseCleaner:
代码语言:txt
复制
RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

  config.around(:each) do |example|
    DatabaseCleaner.cleaning do
      example.run
    end
  end
end
  1. 在spec_helper.rb文件中配置Capybara和Selenium Chrome:
代码语言:txt
复制
require 'capybara/rspec'
require 'selenium-webdriver'

Capybara.register_driver :selenium_chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  options.add_argument('--disable-dev-shm-usage')
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end

Capybara.javascript_driver = :selenium_chrome
  1. 在需要使用Selenium Chrome的测试中,使用js: true标记来启用JavaScript驱动:
代码语言:txt
复制
RSpec.describe 'Some feature', js: true do
  # 测试代码
end

通过以上步骤,你可以在Rails Rspec Docker环境中启用事务性fixture,并确保Selenium Chrome能够看到数据库更改。请注意,这只是一种解决方法,具体的实现可能因项目配置和需求而有所不同。

关于腾讯云的相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,我无法提供相关链接。但你可以通过访问腾讯云官方网站,查找与云计算、数据库、服务器运维等相关的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 使用 YAML 文件配置 Jenkins 流水线

    我们的项目依赖的一个或多个 Docker 镜像的执行(应用,数据库,Redis 等) * 如有必要,易于配置和复制 * 易于增加新项目 * 易于修改构建步骤。... Jenkins 任务,你会看到像以下代码(用于构建): ```shell #!...C.UTF-8 ``` 它描述了项目基本的配置、构建过程需要的环境变量、依赖的服务、还有构建步骤。...你可以 Jenkins 界面上看到每一步的执行结果。 ? #### Environment 部分 如果构建过程需要一些环境变量,你可以在这部分指定它们。...Steps 部分描述的步骤执行过程Docker 容器会提供你设置好的所有环境变量。 ### 总结 目前,WoloxCI 还在我们所有项目中一小部分项目进行测试。

    4.8K40

    Web UI自动化

    无论是与 Jenkins 集成,还是对用例执行时间的要求,分布式执行才是 UI 自动化的最终态,这里使用 docker-compose 来创建 Hub 和 Node 节点 docker-compose.yml...: image: selenium/node-chrome-debug:3.141.59-20210311 container_name: chrome_test restart: always depends_on...也可以返回数据库给测试函数,尤其是跟conftest文件和yield搭配使用 conftest.py import pytest from selenium import webdriver from...测试方法,所以当运行测试方法test_board_sort,程序执行顺序为 Allure Allure 是一款轻量级并且非常灵活的开源测试报告框架。...,选择测试环境地址和项目 ID,然后点击【启动 Web UI 测试】按钮,即在选定的测试环境和项目下,执行自动化用例 2.自动化用例执行完成,会发送飞书通知,并且自动爬取每一条失败用例的数据,展示质量平台上

    1.1K00

    使用Python和Chrome安装Selenium WebDriver

    然后,将Python的selenium软件包安装到我们的环境: $ pipenv install selenium --dev 现在,机器应该可以进行网络测试了!...@pytest.fixture driver = Chrome() Chrome()使用默认选项本地计算机上初始化ChromeDriver实例。...所有WebDriver调用都将通过它进行. driver.implicitly_wait(10) Web UI测试自动化中最痛苦的部分是触发交互之后等待页面加载/更改。该页面需要时间来呈现新元素。...fixture 的第一个迭代-我们的例子是WebDriver初始化-是测试开始之前要调用的“设置”阶段。第二个迭代(将quit称为调用)是测试完成后要调用的“清理”阶段 。...driver.quit() 无论发生什么情况,始终测试结束退出WebDriver实例。测试自动化结束,测试机上的驱动程序进程不会总是死掉。

    3.7K00

    自动化的分布式

    Selenium Grid 是 selenium 的三大组件之一,允许用户同时不同的机器和系统上测试不同的浏览器,可以分布式的来执行我们的自动化测试,也可以测试不同浏览器的兼容性。...环境准备 需要执行脚本的机器上安装 jdk 和配置环境变量。 然后下载 selenium-server-standalone-x.x.x.jar, 版本对应自己使用selenium 的版本。...platform=WINDOWS 运行的平台 注:Node节点需要下载正确的webdriver,并将webdriver路径加入到系统环境变量,本文仅以chrome webdriver进行举例,如需其他浏览器执行用例...另外,selenium需要通过Remote方式执行,以chrome为例,关键部分的代码如下: from selenium import webdriver driver = webdriver.Remote...selenium 分布式,再结pytest-xdist, 确实能提高效率。 对于分布式,最好的是结合docker。这样测试效率会大大提高。

    92130

    GitLab CI CD管道配置参考 .gitlab-ci.yml文件定义字段

    注意: .gitlab-ci.yml 所有方法包括的配置都是管道创建时评估的。该配置是及时的快照,并保留在数据库。...您可以Shell变量甚至自定义环境变量定义颜色代码,这使命令更易于阅读和重用。...merge_request_event 对于创建或更新合并请求创建的管道。启用合并请求管道,合并结果管道和合并序列所必需。...以下示例: 如果Dockerfile或的任何文件docker/scripts/ 更改了AND,我们将手动运行该作业$VAR == "string value"。...启用合并请求管道,合并结果管道和合并序列。 external_pull_requests GitHub上创建或更新外部拉取请求(有关外部拉取请求,请参见管道)。

    22.2K20

    Ansible和Docker的作用和用法

    值得一提的是这个过程我没有配置任何数据库或程序开发语言,Docker 已经帮我把应用所需要的事情都安排好了。 Ansible 通过 SSH 为远端主机发送命令。...的模块等等,但与数据库或消息队列这种重要的概念相比起来,这些语言就处于很随便的境地了——随便给我个编程语言环境,我都能把数据库和消息队列系统跑起来。...加载正确的镜像,然后容器启动。...Docker 容器内运行 Rails 应用 没有本地 Docker 镜像,从零开始部署一个中级规模的 Rails 应用大概需要100个 gems,进行100次整体测试,使用2个核心实例和2GB内存的情况下...我可以1分钟之内和我的客户一起验证新代码,保证不同版本的应用之间是完全隔离的,同操作系统也是隔离的。传统虚拟机启动系统需要花费好几分钟,Docker 容器只花几秒。

    2.1K20

    pytest框架从入门到精通

    但自动化测试我们常常需要根据不同需求挑选部分测试用例运行,并且我们希望用例克服环境不稳定的局限,即运行失败后自动重新运行一次,如果成功就认为是环境问题导致第一次失败,还有我们经常希望测试用例可以并发执行等等...其次,要注意区这个插件仅仅支持python3.6版本及以上,而且如果你想多进程并发,必须跑Unix或者Mac机器上,windows环境仅仅支持多线程运行。...不带参数 #1.fixture()不带参数: import pytest @pytest.fixture() def initial_browser(): from selenium import...当默认为False,就可以选择用上面两种方式来试用fixture。 当设置为True一个session内的所有的test都会自动调用这个fixture。...首先要建立一个conftest.py文件: import pytest from selenium import webdriver @pytest.fixture(scope="session",

    1.3K10

    台技术解析之微服务架构下的测试实践

    项目初期,核心业务团队采取的是基于 Ruby-Rails 的单体架构,如上图左侧所示,主要包括前端、中间业务逻辑层和数据库层三层结构。...单体架构,团队的测试主要依赖基于 Selenium 的集成测试和后检查测试,基于 Rails 的单元测试略有欠缺。转到微服务架构后,为了满足新的需求,测试框架也进行了相应调整。...Mock 实践 单元测试的编写往往有独立性的要求,很多时候因为业务逻辑复杂,代码逻辑也随之变的复杂,掺杂了很多其他组件,导致在编写单元测试用例存在比较复杂的依赖项,如数据库环境、网络环境等,这些增加了单元测试的复杂度和工作量...这种做法和共享测试数据库相比,具有如下优势: 每个测试用例都将拥有独享的数据,避免了由于共享数据库数据更改而出现的错误。 数据刷新 SQL 的量很小,因为仅需刷新与测试用例具体相关的数据表。...//fixture用来表明是什么环境下执行测试用例 const fixture = { prd: { networkInfo: Cypress.env('prdTestNetWorkInfo

    1.6K20

    AutoMagic-开源自动化平台构建思路

    最近在github上看到AutoMagic自动化平台开源了,一手痒,就试着搭了一套环境,现在把思路和大家说一说。...2.1:客户端安装运行环境 服务端:基于python,mysql-python,django环境下运行 客户端:基于python、selenium、 mysqldb 环境下运行,其它依赖包和插件根据说明文档要求进行安装...,默认使用chrome浏览器,也可在执行case过程通过openbrowser关键字重置 示例: python TestSuite.py -t 1 -u tsbc  -b chrome zhufc用户谷歌浏览器下启动...id为1的测试任务 Base.py 是我们关键字维护脚本,class Action重定义了python selenium的一些方法,其它部分均为自定义关键字。...方案二 docker环境部署 Automagic平台我已经进行了容器化,因此只需要在本地安装docker工具,即可下载镜像部署 1:服务器下安装docker   sudo apt-get update

    1.7K41

    自建 Gitlab (邮箱配置、拆分 PostgreSQL、Redis) + 随想

    快速启用 配置的一般原则是先可用再优化,简单启动 gitlab 只需要一条命令: sudo docker run --detach \ --hostname gitlab.yuclk.com \...'] = true;" sudo docker run -e GITLAB_CDN_HOST=gitlab.youclk.com 以上只是简写示例,我个人并不推荐后面两种,虽然通过环境变量设置具有更高的自由度...经过一番揪心地测试之后,还是得说可惜,浪费了不少时间却没有顺利达到目的,最后只能按照官方推荐的配置文件禁用 postgreSQL 和 redis。...postgreSQL 默认的用户名、密码、初始数据库都是 postgres,可以通过设置环境变量更改默认配置: environment: - POSTGRES_PASSWORD=mysecretpassword...强迫症的救赎 上一节提到目前的微服务环境启用 SSL 不需要任何配置,那我写这节干嘛?脑残吗?好吧,是脑残,而且是添加了强迫症的脑残,先放一张图: ? 逼死强迫症的是什么,各位能懂吗?

    2.3K60

    Selenium 4.0-最新的测试自动化工具

    Selenium 4版本可以发现以下功能; Web驱动程序已更改为W3c(万维网联盟)标准化: Selenium 4对W3C的标准化进行了更改,以鼓励WebDriver API的各种软件实现之间的兼容性...此更改可确保通信不需要API的编码和解码。这样可以形成一个更稳定的框架,并减少各种Web浏览器之间的兼容性问题。 改进的Selenium网格 Selenium GridUI和稳定性方面已被即兴创作。...Selenium网格的编码已完全更改,并且网格的控制台已重组。这允许多个浏览器和操作系统上并行执行测试用例。现在,网格可以满足节点和集线器的目的。...想要测试Opera的用户可以使用Chrome,而想要测试PhanthomJS的用户可以使用无头模式的Chrome或Firefox。Selenium服务器上,HTML单元不再是默认值。...网络与性能分析仪 在网络分析器方面,已修改了诸如拦截请求,通过更改连接类型来模拟网络条件,启用网络跟踪之类的功能。

    1.9K40

    conftest.py是什么?该怎么用?

    自定义 fixture:conftest.py 允许我们定义自定义的fixture,它是一种提供测试数据或测试环境的机制。这些 fixture 可以测试模块通过函数名直接使用,从而简化测试代码。...定义共享 fixture conftest.py,使用@pytest.fixture 装饰器定义共享的fixture函数。这些 fixture 函数可以测试模块中直接使用。...配置全局参数: conftest.py,可以定义全局的配置参数,例如日志级别、数据库连接等。这些参数可以整个测试项目中共享和使用。...使用示例我们根目录或者创建conftest.py文件,文件内容如下:import pytestfrom selenium import webdriver@pytest.fixture()def...通过共享配置、定义 fixture 和配置全局参数,我们可以减少重复代码,提供统一的测试环境和数据,以及灵活扩展 pytest 的功能。

    32340

    Cypress与TestCafe WebUI端到端测试框架Demo

    安装Node.js并配置npm环境变量 1、Node.js下载地址:https://nodejs.org/en/ ? 2、安装路径 ? 3、配置npm环境变量 ?...这个文件必须有一个特殊的结构-测试必须组织到fixture。...下面的fixture包含一个简单的测试,该测试文本编辑器中键入开发人员名称,然后单击Submit按钮。...要等待操作完成,调用这些操作或操作链使用await关键字。 2、观察页面状态 TestCafe允许测试人员观察页面状态。...; }); 总结: 接触了Cypress和TestCafe之后,惊掉下巴,这两个工具的轻量级之轻,与之前使用的Selenium相比,简直无法想象,从安装到执行第一个脚本,从上述的学习笔记可以看出,

    3.8K30

    Cypress web自动化34-cy.exec()执行系统命令

    options 选项 传递选项对象以更改的默认行为cy.exec()。...options 选项参数说明 选项 默认 描述 log true 命令日志显示命令 env {} 命令执行之前要设置的环境变量的对象(例如{USERNAME: ‘johndoe’})。...// { // code: 0, // stdout: "Files successfully built", // stderr: "" // } }) 操作数据库并断言数据库已成功...options 选项 设置 timeout 超时时间 // 如果脚本任务20s没执行完成,那么就会失败 cy.exec('npm run build', { timeout: 20000 }) 选择非零退出不失败...单击exec命令日志的命令,控制台将输出以下内容: ? cy.exec() 能执行系统命令,所以当然也是可以执行python的命令行指令的,如在cmd里面执行 python xx.py

    96320
    领券