Tag: unit testing

如何testing与Docker一起使用的代码?

我们有一些适用于Docker的Java代码。 例如,一种方法可能会创builddockernetworking,创build一个或两个容器,设置标签,标签,公开一些端口等。 我们想要testing这个,但是我们的unit testing变成了集成testing,因为每个testing实际上都是和真正的Docker一起工作的。 与此相关的主要问题是testing的速度 – 我们有很多 – 开发人员的速度太慢了。 而当testing运行时,机器几乎被冻结。 我们在Docker之上有一层,再加上我们使用Docker Java库来与API交谈。 问题:在这种情况下,我们应该如何devise我们的testing? 目前的想法是有“模型”docker客户端,它接收命令,但不要在真正的docker上发出它们; 然后我们可以检查命令是否正确设置。 为此,我们还需要模拟docker行为,如调用docker ps等。 而且,我们不能100%确定我们发送的命令真的与Docker一起工作! 想象一下,如果docker版本发生了变化,API中的内容也发生了变化 – 我们如何能够检测到这一点?

testing具有外部依赖性的集装箱化微服务

于是我构build了一个REST API微服务,它查询本地Elasticsearch实例并根据内部协议转换结果。 我将其构build到一个Docker镜像中,我想在build中运行一些unit testing。 由于ES连接到私有Dockernetworking,在构build过程中微服务不可访问,因此testing显然失败。 我想知道,有没有办法解决这种情况,而不必使用一些复杂的testing框架来做dependency injection? 你在工作实践中如何testing这种容器?

与jenkins和docker工人一起使用django-jenkins

我试图在Jenkins上展示testing结果。 我的堆栈是,我把Django应用程序放在Docker镜像中,并且和Jenkins一起部署它。 里面yaml文件,我已经运行docker容器function,我把运行脚本。 – name: Run unit test script command: docker exec -i my_container /bin/bash -c './manage.py jenkins –enable-coverage' 生成进展顺利,如果我ssh(在terminal)到这台机器,并看看docker容器,我可以看到reports文件夹。 我的问题是,Jenkins里面,Workspace下我可以看到所有的文件,但不是reports文件夹。 因为(我认为),如果我添加Post-build Action -> Publish JUnit test result report我不能select文件夹里面的报告。 我猜: 我的猜测是jenkins无法看到泊坞窗图像,并在yaml命令触发之前以某种方式复制所有文件。 但是我不知道如何解决这个问题。

如何使用GitLab CI设置Selenium E2Etesting?

我正在开发一个网站前端的Vue.js应用程序。 对于这个应用程序,我想使用单元和E2Etesting。 我用vue-cli构build了我的项目。 根据我的理解,vue-cli使用Karma进行unit testing,使用Nightwatch + Selenium进行E2Etesting。 我的.gitlab-ci.yml如下所示: stages: – test test:express: image: node:boron stage: test script: – cd backend/ – npm install –progress=false – ./node_modules/.bin/jasmine test:vue: image: node:boron stage: test script: – cd frontend/ – npm install –progress=false – npm test npm test运行e2e和unit testing,并在本地计算机上运行。 unit testing运行顺利,Selenium调出Chrome窗口并使用E2Etesting。 问题是不知道如何在GitLab CI上运行E2E Seleniumtesting。 它不断给我一个错误说: Could not connect to […]

使用docker进行unit testing

我运行一个MySQL容器–net=host选项。 所以现在我可以使用unit testing:g: self.db = MySQLdb.connect(host =“127.0.0.1”,user =“XYZ”,passwd =“XYZ”,db =“TEST_DB”) 问题是当我试图dockerize我的unit testing,链接容器与我的MySQL容器, 127.0.0.1 IP是无效的。 我需要使用真正的IP为MySql容器,或使用DNS( /etc/hosts文件)。 所以我需要更改ip host 127.0.0.1的名称。 我想有一个更好的方法来做到这一点? 我可以,例如,改变我的开发环境的/etc/hosts文件。

如何设置持续集成(Ansible)?

我们有一个相当大的代码库,我们使用Ansible来部署我们的服务器。 我现在想要开始持续集成,我也在考虑使用Ansible。 我认为我们可以做到这一点的方式是,当合并开发或掌握一些东西时,在一些外部服务器(自我pipe理的Jenkins服务器或某种商业服务)上使用webhook,然后在DigitalOcean上使用api生成一个服务器,运行可以设置的东西(从多个仓库中提取并创buildtesting数据),然后运行unit testing。 我想使用Ansible的原因是因为它确保我们所拥有的环境与我们的生产服务器完全相同。 但是我不确定Ansible是否是正确的工具,因为我认为Ansible通常是一种编排工具。 我当然也可以设置一些Docker文件,但这意味着我需要保持Dockerfile和Ansible脚本的同步(并且我们将在未来几个月内将LOT更改为我们的设置)。 任何人都可以分享一些build议吗? 我应该使用Ansible,Docker,还是有其他更好的select? 我可以设置一个Jenkins服务器,但我更愿意使用商业服务,因为我想避免需要pipe理Jenkins服务器。 而且我也宁愿避免使用DigitalOcean,只是把持续集成全部放在一个平台上(Jenkins /其他?)。 我环顾了各种商业CI平台,但是我不能真正find使用Ansible进行testing的任何事情。 所有的提示,欢迎!

docker-compose在testing后退出depends_on服务

一旦依赖容器完成,如何获取服务容器退出? 我有一个运行在app_unittestbot容器中的testing套件,它依赖于运行在不同容器中的postgresql数据库服务器(postgres:9.5-alpine)。 一旦testing套件退出,我想检查testing套件的返回代码并停止数据库容器。 使用下面的docker-compose.yml,数据库服务容器永远不会停止。 泊坞窗,compose.yml version: '2.1' services: app_postgresql95: build: ./postgresql95/ ports: – 54321:5432 app_unittestbot: command: /root/wait-for-it.sh app_postgresql95:5432 –timeout=60 — nose2 tests build: ./unittestbot/ links: – app_postgresql95 volumes: – /app/src:/src depends_on: – 'app_postgresql95'

如何编写一个unit testing来检查在瞬态系统资源约束条件下的正确行为?

我有一个Python 3应用程序,它使用多处理模块并行地在许多CPU上分布大量的资源密集型科学计算。 计算中有几个步骤要求进程分配适度大的数组。 当我在OS X笔记本电脑上运行该应用程序时,该应用程序运行良好,但长期计划是,它通常会从Docker容器中运行,然后运行在Amazon Web Services EC2实例或其他类似云的虚拟机 – 将应用程序embedded到两个级别的机器虚拟化技术中。 我预计未来,其他一些用户可能会尝试运行带有虚拟机资源(内存,交换空间等)的应用程序,该资源被configuration为设置的值太小,太小。 (有明确的财务激励措施可以做到这一点,因为您对云计算服务的支付往往较less,所用的资源也较less。) 这就提出了在严格限制资源的情况下,当一个足够大的内存块暂时不可用时,其中一个进程可能会尝试为数组分配内存,从而触发Python MemoryErrorexception。 这个问题的解决scheme可能看起来像下面的代码片段:尝试分配内存,如果发生exception,请稍等片刻,然后再试一次: import numpy as np import time import datetime import os from warnings import warn def getHugeArray(n, retry=1, warnuser=5): # Don't retry too often if retry < 0.1: retry = 1 # Don't send a useless flood of warning messages if […]

configurationwercker.yml在需要postgres服务的python应用程序中运行unit testing

我正在尝试使用dockerized版本的wercker在python应用程序中运行unit testing,但大部分unit testing失败,并报错sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: No route to host 。 Wercker文档缺乏configuration来build立这种连接。 也许我错过了简单的东西,但我不能让这个数据库连接运行我的testing后,花费比我应该有更多的时间。 无论如何,也有类似的问题的Rails应用程序,但答案不帮助,所以也许问题将帮助其他人与Python应用程序。 寻找这样的帮助! 以下是我目前的wercker.yml: # http://devcenter.wercker.com/docs/containers/index.html box: python:3.4.4-onbuild # You can also use services such as databases. Read more on our dev center: # http://devcenter.wercker.com/docs/services/index.html services: # http://devcenter.wercker.com/docs/services/postgresql.html – id: postgres:9.4 env: POSTGRES_PASSWORD: mylittlesecret POSTGRES_USER: postgres # optional # This […]

技术上可能运行meteor运行服务器的unit testing?

本地我运行meteor test –driver-package practicalmeteor:mocha –port 4001运行我的unit testing,这是刷新每次我正在更改文件。 所以这对开发是可以的。 在我的CI过程中,我想先做unit testing,如果他们通过,我做一个meteor build ,并将应用程序部署到docker集装箱。 这是工作,但运行meteor test –once –driver-package dispatch:mocha作为CI阶段将总是需要几分钟(5-15分钟)每次启动一个meteor实例,这是不是很实际的单位试验。 工作,但太多时间了… 所以我的想法是,如果技术上可以运行一种meteortesting服务器作为一个已经在运行的docker集装箱。 在CIunit testing阶段,我将拉动存储库(文件)并立即运行testing。 但是这可能与meteor有关吗?