对于 Drupal 站点的自动化测试,我们使用 Behat 测试脚本。在我们的本地开发计算机上,我们使用由 Acquia Devdesktop 创建的自签名 SSL 证书。使用 Behat 在不同浏览器中运行测试没有问题,因为您可以信任浏览器本身中的证书。然而,对于没有打开浏览器的 REST 界面,情况就不同了。 Behat 不会接受自签名证书,因为它“不安全”。
运行 REST 测试时,这是我们收到的错误:
cURL 错误 60:SSL 证书问题:自签名证书(请参阅 http://curl.haxx.se/libcurl/c/libcurl-errors.html)(GuzzleHttp\Exception\RequestException)
测试用例本身没有任何问题,因为它在我们启用 SSL 证书之前就有效。我们尝试使用文档和其他tickets中的选项编辑配置 .yml 文件,但没有成功。
有没有办法信任 REST 接口测试的自签名证书?如果您需要更多信息,请告诉我。
编辑:添加了 YML 配置和composer.json 文件
//composer.json
{
"require": {
"drupal/drupal-extension": "~3.0",
"emuse/behat-html-formatter": "dev-master",
"behatch/contexts": "*",
"guzzlehttp/guzzle": "dev-master",
"behat/mink-goutte-driver": "dev-master"
},
"config": {
"bin-dir": "bin/"
}
}
注意我从下面的 yml 文件中删除了我的 url。
default:
suites:
default:
contexts:
- FeatureContextDrupal
- behatch:browser
- Drupal\DrupalExtension\Context\MinkContext
- Drupal\DrupalExtension\Context\DrupalContext
- Drupal\DrupalExtension\Context\DrushContext
- Drupal\DrupalExtension\Context\MessageContext
- behatch:debug
- behatch:system
- behatch:json
- behatch:table
- behatch:rest
- behatch:xml
formatters:
html:
output_path: %paths.base%/build/html/behat
extensions:
Sanpi\Behatch\Extension: ~
emuse\BehatHTMLFormatter\BehatHTMLFormatterExtension:
name: html
Behat\MinkExtension:
goutte:
guzzle_parameters:
verify: false
ssl.certificate_authority: false
selenium2:
wd_host: http://localhost:4444/wd/hub
base_url: "https://myurl.devcloud.acquia-sites.com/"
Drupal\DrupalExtension:
blackbox: ~
api_driver: 'drupal'
drush:
alias: 'ns-test'
drupal:
drupal_root: '/var/www/html/utcfs.dev/docroot'
chrome:
extensions:
Behat\MinkExtension:
selenium2:
browser: chrome
capabilities: { "browser": "chrome", "browserName": "chrome", "version": "*", "browserVersion": "*" }
iexplore:
extensions:
Behat\MinkExtension:
selenium2:
browser: internet explorer
capabilities: { "browser": "internet explorer", "browserName": "internet explorer", "version": "*", "browserVersion": "*" }
在 GitHub 上找到我的答案:
对于
Goutte 4+
(使用 Symfony 的 HttpClient
而不是 Guzzle):
extension:
Behat\MinkExtension:
goutte:
server_parameters:
verify_host: false
verify_peer: false
对于
Behat3/MinkExtension2.2
extensions:
Behat\MinkExtension:
base_url: 'https://localhost'
sessions:
default:
goutte:
guzzle_parameters:
defaults:
verify: false
较低版本(1.x)
extensions:
Behat\MinkExtension:
goutte:
guzzle_parameters:
verify: false