Selenium webdriver 如何将Codeception集成到本地代码中? 我需要什么 能够使用本地控制台运行测试
与Codeception的不同Selenium webdriver 如何将Codeception集成到本地代码中? 我需要什么 能够使用本地控制台运行测试,selenium-webdriver,automated-tests,codeception,Selenium Webdriver,Automated Tests,Codeception,与Codeception的不同 php vendor/bin/codecept -c path/to/tests/codeception run acceptance BuyCest 但是 local/console tests:fn:buy 本地控制台应具有2个选项: --log-当打开时它应该产生类似于Codeception的--步骤的控制台输出,当关闭时保持完全沉默,就像Codeception的--安静 --errors=logger-设置时,它应该将所有错误写入日志,可能需要借助测试
php vendor/bin/codecept -c path/to/tests/codeception run acceptance BuyCest
但是
local/console tests:fn:buy
本地控制台应具有2个选项:
--log
-当打开时它应该产生类似于Codeception的--步骤的控制台输出
,当关闭时保持完全沉默,就像Codeception的--安静
--errors=logger
-设置时,它应该将所有错误写入日志,可能需要借助测试失败。打印事件处理程序,未设置时-不写入
local/console tests:fn:buy --log
这意味着我自己看到了测试过程,我不想写错误日志
从cron运行测试
cron的命令可以是
cd /path/to/project/ && local/console tests:fn:buy --errors=logger
这意味着没有控制台输出,但所有错误都会写入错误日志
猜解
对Codeception控制台的委托调用
比如我写
local/console tests:fn:buy --log
然后我们的console命令创建以下代码:
$commandString = "php vendor/bin/codecept -c path/to/tests/codeception run acceptance BuyCest --steps";
passthru($commandString);
它可以解决控制台输出的任务,但问题在于日志部分:
local/console tests:fn:buy --errors=logger
我知道我可以设置test.fail.print
事件处理程序,方法是创建handlers类,然后在codeception.yml
config:
extensions:
enabled:
- \Local\Codeception\Extensions\EventsHandler
但完全不知道如何告诉Codeception根据命令行参数启用或禁用该EventsHandler
。有一些--env
参数,但它似乎只适用于套件配置,而不适用于全局codeception.yml
所以这种方式看起来很粗糙,目前我无法想象它如何满足所有的需求
不使用Codeception的控制台直接运行测试
那将是理想的。但我不知道怎么做。我阅读的所有文档和讨论都围绕着从控制台运行测试展开,就像Codeception牢牢地固定在它上面一样。如果有人给我指点解决办法,那就太好了
简化需求
总是像这样运行测试
local/console tests:fn:buy
在这种情况下,详细的输出将始终显示为--步骤,以及通过test.fail.print
事件处理程序写入的日志
然后,对于手动运行,我可以使用
local/console tests:fn:buy
用于cron运行
local/console tests:fn:buy &>/dev/null
放弃Codeception并直接使用WebDriver
很高兴有一个正常的输出,如I see…
或I click…
等。在测试失败后保存页面源代码和屏幕截图
Codeception还具有很多特性,比如利用PHPUnit、中断手动控制测试、不同后端的抽象、CI支持等等,但我不需要它们
而且它有过于复杂的事情,限制和限制。就像需要使用CEST、处理程序、扩展一样,yml也会进行串联配置。严重依赖于它自己的控制台。关注长CSS/XPath选择器,而不是通过从外部元素中查找内部元素将测试逻辑分解成更小的部分。所有这些对我来说已经变得烦人和难以处理了
我希望我能忘记生成项目、文件夹、一堆类、配置和控制台,将所有内容放在标准类树中的一个类中。我知道我可以用WebDriver做到这一点
最后
你对我的问题有什么建议?可以像使用库一样使用Codeception而不是使用外部框架吗?如果不是的话,我想早点退出,以免在将来被淹没得更深。你说的“控制台”是什么意思?你说的是从浏览器控制台运行测试吗?因为有一个单独的Codeception JS库。通常,PHP版本驱动Selenium,不需要任何控制台。如果需要,您可以获得控制台输出,但它不是必需的或通常使用的。如果您需要JS中的某些内容,您可以执行ejs()并从PHP获得结果。@John Dee,我所说的“控制台”是指类似的东西,它允许使用从命令行运行的自定义命令创建控制台应用程序。对于Symfony,它是php-bin/console-app:create user
,对于Codeception-php-vendor/bin/codecept-run-acceptance-BuyCest
,对于Laravel-php-artisan-make:command-sendmails
,等等。我们有我们的定制本地版,建立在Symfony控制台之上。仍然不知道你在说什么。我认为你在概念上弄错了。创建“控制台”应用程序与Codeception无关。您列出的命令“php vendor/bin/codecept run acceptance BuyCest”只是运行测试BuyCest。它不会创造任何东西。Symphony和Laravel是应用程序框架。Codeception是一个测试框架,它不构建任何东西。也许可以把你的问题分成几个部分?