У меня есть файл docker -compose.yml, например:
version: '3.2'
services:
pa-portal:
image: web_app_image
container_name: pa_portal
volumes:
- productDB:/web_app/db
ports:
- "8080:8080"
cypress:
image: "cypress/included:4.4.0"
depends_on:
- pa-portal
environment:
- CYPRESS_baseUrl=http://pa-portal:8080
working_dir: /cypress-testing
volumes:
- ./:/cypress-testing
volumes:
productDB:
Поэтому в сети по умолчанию у меня есть контейнер cypress
(который запускает мои тесты при выполнении docker -compose up) и контейнер с именем pa-portal
, в котором находится мое веб-приложение Django.
Я создал файл clear-db. js следующим образом, чтобы очистить определенную таблицу в базе данных:
var sqlite3 = require('sqlite3').verbose()
let db = new sqlite3.Database('pa-portal:/web_app/db/db.sqlite3', sqlite3.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the database.');
});
db.run(`DELETE FROM table_name`, function (err) {
if (err) {
return console.error(err.message);
}
console.log(`Row(s) deleted ${this.changes}`);
});
/web_app/db/db.sqlite3
- это моя база данных, хранящаяся в контейнере docker.
В моих тестах Cypress я хочу запустить этот код в моем хуке beforeEach, чтобы очистить эту таблицу перед запуском следующий - но я не уверен, как это сделать. Мне нужно использовать cy.exec()
или cy.task()
? Нужно ли мне поместить код в функцию, а затем как-то вызвать ее из моих тестов?