如何在 CircleCI 上设置并发服务进行测试?
How do I setup concurrent services on CircleCI for Testing?
我有一个应用程序,运行它使用 Jasmine 和 WebdriverIO 进行测试,我想在 CircleCI 中实现自动化。我是一般测试的新手,所以我不确定该怎么做。
这是我所知道的:
- 为了 运行 测试,我调用
npm test
- 4444 端口需要一个 selenium 服务器(我可以从
npm start
开始)
- 应用程序应该 运行ning 在端口 80 上(我可以使用另一个
npm
命令)
- 测试完成后,我返回到命令行,但其他服务(在 p4444 和 p80 上)仍然 运行ning
以下是我不完全理解的内容:
- 在本地,这些需要 3 个终端同时 运行,有没有办法用 CircleCI 做到这一点?
- 如果是这样,我如何判断 p4444 和 p80 何时准备好进行测试,或者在测试完成后取消它们?
- 我的问题是 Docker 还是 CircleCI?
为了清楚地回答您的问题,我将按如下方式引用您的每个命令:
- 为了运行考验你运行
npm test
- 致运行硒你运行
npm start selenium
- 为了 运行 你的应用你 运行
npm start app
Questions/Answers:
在本地,这些需要 3 个终端同时 运行,有没有办法用 CircleCI 做到这一点?
是的。您只需要启动一个 background
设置为 true
的进程
即要在后台启动 Selenium,您可以 运行 以下
- run:
name: Start Selenium in background
command: |
npm start selenium
background: true
启动进程后,但在使用它之前,等待进程在给定端口上就绪
- run:
name: Waiting for Selenium server to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 4444 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for Selenium && exit 1
注意如果你在上面的命令中替换4444,你可以在另一个端口等待一个进程
如何判断 p4444 和 p80 何时准备好进行测试,或者在测试完成后取消它们?
您的 CircleCi 命令可能如下所示
- run:
name: Start Selenium in background
command: |
npm start selenium
background: true
- run:
name: Start App in background
command: |
npm start app
background: true
- run:
name: Waiting for Selenium server to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 4444 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for Selenium && exit
- run:
name: Waiting for App server to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 80 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for Selenium && exit
- run:
name: Run Tests
command: |
npm test
您问了一个单独的问题 - 测试完成后如何取消端口 4444 和 80 上的进程?你真的不需要。当测试作业完成时,容器将被释放,辅助应用程序将停止。
但是,如果您想停止这些进程以便 运行 一些其他作业步骤,您可以 运行 终止命令(如果不清楚我可以详细说明)
我的问题是 Docker 还是 CircleCI?
看起来这只是理解如何 运行 CircleCi 中的一系列命令的问题
如果您按照上述步骤操作,您应该能够实现您的目标。
我有一个应用程序,运行它使用 Jasmine 和 WebdriverIO 进行测试,我想在 CircleCI 中实现自动化。我是一般测试的新手,所以我不确定该怎么做。
这是我所知道的:
- 为了 运行 测试,我调用
npm test
- 4444 端口需要一个 selenium 服务器(我可以从
npm start
开始) - 应用程序应该 运行ning 在端口 80 上(我可以使用另一个
npm
命令) - 测试完成后,我返回到命令行,但其他服务(在 p4444 和 p80 上)仍然 运行ning
以下是我不完全理解的内容:
- 在本地,这些需要 3 个终端同时 运行,有没有办法用 CircleCI 做到这一点?
- 如果是这样,我如何判断 p4444 和 p80 何时准备好进行测试,或者在测试完成后取消它们?
- 我的问题是 Docker 还是 CircleCI?
为了清楚地回答您的问题,我将按如下方式引用您的每个命令:
- 为了运行考验你运行
npm test
- 致运行硒你运行
npm start selenium
- 为了 运行 你的应用你 运行
npm start app
Questions/Answers:
在本地,这些需要 3 个终端同时 运行,有没有办法用 CircleCI 做到这一点?
是的。您只需要启动一个 background
设置为 true
即要在后台启动 Selenium,您可以 运行 以下
- run:
name: Start Selenium in background
command: |
npm start selenium
background: true
启动进程后,但在使用它之前,等待进程在给定端口上就绪
- run:
name: Waiting for Selenium server to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 4444 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for Selenium && exit 1
注意如果你在上面的命令中替换4444,你可以在另一个端口等待一个进程
如何判断 p4444 和 p80 何时准备好进行测试,或者在测试完成后取消它们?
您的 CircleCi 命令可能如下所示
- run:
name: Start Selenium in background
command: |
npm start selenium
background: true
- run:
name: Start App in background
command: |
npm start app
background: true
- run:
name: Waiting for Selenium server to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 4444 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for Selenium && exit
- run:
name: Waiting for App server to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 80 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for Selenium && exit
- run:
name: Run Tests
command: |
npm test
您问了一个单独的问题 - 测试完成后如何取消端口 4444 和 80 上的进程?你真的不需要。当测试作业完成时,容器将被释放,辅助应用程序将停止。
但是,如果您想停止这些进程以便 运行 一些其他作业步骤,您可以 运行 终止命令(如果不清楚我可以详细说明)
我的问题是 Docker 还是 CircleCI?
看起来这只是理解如何 运行 CircleCi 中的一系列命令的问题
如果您按照上述步骤操作,您应该能够实现您的目标。