启动节点服务器并在CICD中运行测试

时间:2019-10-15 12:23:49

标签: node.js azure-devops continuous-integration supertest

我目前正在尝试将一些测试部署到Azure管道(但这应适用于任何CICD框架)

我有一个快递项目,我在supertest中使用mochanpm install npm start npm test在本地运行测试,一切都很好。

现在,我想部署到生产环境,并且想在部署发生之前在管道中运行测试。

问题是,由于这些测试是针对http运行的,因此它们需要服务器运行。

所以,在我的管道中,我有

npm test

但是,事实是,Test::func1(); 在服务器启动时未在运行,而是挂在正在运行的服务器中。

服务器启动时是否可以启动测试?然后在测试完成后停止服务器?

还是有更好的方法来实现所有这些?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Supertest,我建议您为测试导出Express应用程序,而不要像他们的文档中所示运行它,那么您只需要运行from sacred import Experiment from sacred.observers import MongoObserver ex = Experiment() ex.observers.append(MongoObserver.create()) def compute(): summ = layer1 - layer2 return summ @ex.config def my_config(): hp_list = [{"neurons" : [32,32] , "dropout": 1.0}, {"neurons" : [32,32] , "dropout": 0.7}, {"neurons" : [32,16] , "dropout": 0.9}, {"neurons" : [24,16] , "dropout": 0.9}, {"neurons" : [24,8] , "dropout": 0.9}, {"neurons" : [16,8] , "dropout": 0.9}, {"neurons" : [64,64] , "dropout": 0.9}, {"neurons" : [64,64] , "dropout": 0.7}, {"neurons" : [64,32] , "dropout": 0.9}, {"neurons" : [64,32] , "dropout": 0.7}, {"neurons" : [48,32] , "dropout": 0.9}, {"neurons" : [48,32] , "dropout": 0.7}, {"neurons" : [48,16] , "dropout": 0.9}, {"neurons" : [48,16] , "dropout": 0.7},] n_epochs = 2 @ex.capture def training_loop(hp_list, n_epochs): for j in hp_list: print("Epoch: ", n_epochs) # layer1 = random.randint(18,68) # layer2 = random.randint(18,68) # layer3 = random.randint(18,68) layer1 = j["neurons"][0] layer2 = j["neurons"][1] dropout_ratio = j["dropout"] print("WHATS UUUUUP",j, layer1, layer2, dropout_ratio, sep="_") # vae_training_loop_NN_DO(i, layer1, layer2, dropout_ratio ) @ex.automain def my_main(): training_loop() npm install

例如:

app.js

npm test

test.spec.js

const express = require('express');
const app = express();

// Add middlewares

module.exports = app;