Сергей Пирогов
Senior QA Automation
Testing Center of Excellence
Ciklum
http://automation-remarks.com
@s_pirogov
Как использовать Docker
Docker и автоматизация на Java
Docker и Python
Поднимаем все локально
docker run -e -p 3306:3306 \
MYSQL_ROOT_PASSWORD=root mysql:5.7
docker run container
test
docker stop container
Руками - не автоматизация
.bat / .sh - не серьезно
Стартовать прямо из кода
Работает через JUnit rule
Умеет запускать любые контейнеры
public class SimpleMySQLTest {
@Rule
public MySQLContainer mysql = new MySQLContainer();
@Test
public void testSimple() throws SQLException {
ResultSet resultSet = performQuery(mysql, "SELECT 1");
int resultSetInt = resultSet.getInt(1);
assertEquals(1, resultSetInt);
}
}
100% повторяет боевую базу
Не нужно чистить после тестов
База данных всегда в одном состоянии
public class BaseTest {
@ClassRule
public static BrowserWebDriverContainer chrome =
new BrowserWebDriverContainer()
.withDesiredCapabilities(chrome())
@BeforeClass
public static void setUp() {
setWebDriver(chrome.getWebDriver());
}
}
Быстро разворачивается
Не нужно париться с драйверами
Можно легко перейти на клауды
Standalone Selenium контенеры
Selenium Grid контенеры
Контейнеры баз данных
@pytest.fixture(scope="session")
def selenium_container(request):
container = SeleniumGrid(FIREFOX, node_count=2).start()
yield container
container.stop()
def test_google(self, selenium_container):
driver = selenium_container.get_driver()
driver.get("http://google.com")
driver.find("q").type("Hello")
FROM ubuntu:16.04
# Install Python
RUN \
apt-get update && \
apt-get install -y python
RUN apt-get update -qqy \
&& apt-get -qqy install ffmpeg
EXPOSE 8086
USER root
WORKDIR /home/root/
COPY . /home/root
RUN pip install --no-cache-dir -r requirements.txt
ENTRYPOINT [ "python", "main.py" ]
docker = DockerClient()
docker.build_from_path(".", tag="video_service")
docker.run("video_service", bind_ports={8086: 8086})
Docker упрощает жизнь
Биндинги для языков упрощают использование Docker
http://automation-remarks.com
@s_pirogov