Use Docker to automate testing

缘由:在测试中需要启动一些后台进程,但是后台进程启动的非常慢,严重影响了自动化测试。

问题:需要快速的启动或者关闭一些后台进程,必须redis、memcache等。

方案:使用docker这种轻量级的虚拟机(container)。


安装docker-py

pip install docker-py

定义docker

postgres = dict(image="postgres", 
prots=["5432:5432",],
environment={
'POSTGRES_USER': 'test',
'POSTGRES_PASS': 'test'
}
)

rabbit = dict(image="rabbitmq:3-management",
ports=["15672:15672", "5762:5762"]
)

container = [postgres, rabbit]

定义class level的setUp和tearDown

import docker
class DockerUnitTestExample(unittest.TestCase):
@classmethod
def initContainer(cls):
postgres = dict(image="postgres",
ports=["5432:5432",],
envrionment={
"POSTGRES_USER": "test",
"POSTGRES_PASSWORD": "test"
}
)

container = [postgres,]

for container in containers:
cls.dockClient.pull(container["image"])
cls.containers.append(cls.dockerClient.create_container(**container)
@classmethod
def runContainers(cls):
for container in cls.containers:
cls.dockerClient.start(container["Id"])

@classmethod
def stopContainers(cls):
for container in cls.containers:
cls.dockerClient.stop(container["Id"])

@classmethod
def setUpClass(cls):
cls.containers = []
cls.dockerClient = docker.Client()
cls.dockerClient.login('dockerhubuser', 'dockerhubuser')
cls.initContainers()
cls.runContainers()

@classmethod
def tearDownClass(cls):
cls.stopContainers()

参考: http://www.talperry.com/2015/10/03/python-unittests-with-docker/

Selion自动化测试框架介绍

发现的一个好玩的新的基于selenium(browser based automation framework)的新型的框架,
开发和维护者来自于Paypal公司。

项目地址:https://github.com/paypal/SeLion

Selion的基本介绍:

客户端

  • 客户端基于TestNG进行管理,并且支持DataProvider进行数据注入
  • 支持selenium的POP(Page Object Pattern)开发模式,好玩的是支持使用类DSL语言使用YAML
    格式预定义page object

服务端

  • 服务端基于Grid进行管理,并支持对hub和node的自定义

文档

注意

  • 该项目依然处于开发状态