Тестирование Odoo с phantomjs - page.evaluate eval result: false - PullRequest
0 голосов
/ 10 сентября 2018

При тестировании odoo с помощью phantomjs (путем определения туров) он выдает ошибку "page.evaluate eval result: false", и консоль продолжает выдавать ту же ошибку:

2018-09-10 13:46:12,250 8311 INFO grp openerp.tests.common: phantomjs: PhantomTest.run: wait for condition: odoo.__DEBUG__.services['web.Tour'].tours.test_type_invisible
2018-09-10 13:46:12,251 8311 INFO grp openerp.tests.common: phantomjs: page.evaluate eval expr: odoo.__DEBUG__.services['web.Tour'].tours.test_type_invisible
2018-09-10 13:46:12,252 8311 INFO grp openerp.tests.common: phantomjs: page.evaluate eval result: false

Полный код следующим образом:

test_legajo.py

# -*- coding: utf-8 -*-

from openerp.tests import common


class TestsLegajo(common.HttpCase):
    """
        tests models uy_hr.legajo

        Requires:
            -PhantomJS
    """

    MENU_ID = 'uy_hr.uy_hr_legajos_menu'

    post_install = True
    at_install = False

    def setUp(self):
        super(TestsLegajo, self).setUp()
        self.authenticate('admin', 'admin1234')
        self._build_URL()

    def _build_URL(self):
        ir_ui_menu = self.env.ref(self.MENU_ID)
        act_window = ir_ui_menu.action
        modelo = act_window.res_model
        menuId = ir_ui_menu.id
        actId = act_window.id
        self.url = '/web#model=%s&menu_id=%s&action=%s&' % (modelo, menuId, actId)

    def test_type_invisible(self):
        """
            Verifica campo type no aparezca en la vista form
        """
        self.phantom_js(
            url_path=self.url,
            code="odoo.__DEBUG__.services['web.Tour'].run('test_type_invisible', 'test')",
            ready="odoo.__DEBUG__.services['web.Tour'].tours.test_type_invisible",
            login=None
        )

legajo.tour.js

odoo.define('legajo.tour', function(require) {
    'use strict';
    var core = require('web.core');
    var Tour = require('web.Tour');
    var _t = core._t;

    Tour.register({
        id: 'test_type_invisible',
        name: _t("Verifica campo type no aparezca en la vista form"),
        mode: 'test',
        steps: [
            {
                title: _t("1 - Paso Dummy (Carga de Página)."),
                waitFor: 'button.o_list_button_add',
            },
            {
                title: _t("2 - Se accede al formulario de creación de Solicitud de Recursos."),
                waitFor: "button.o_list_button_add",
                element: "button.o_list_button_add",
            },
            {
                title: _t("3 - Verifica campo type no aparezca en la vista form"),
                waitFor: "label.oe_form_label.o_form_invisible:contains('Tipo')",
            },
        ]
    });
 });

При превышении odoo. DEBUG .services ['web.Tour']. Run ('test_type_invisible', 'test') вручную в консоли браузера выдает: «Ошибка типа: состояние не определено»

При выполнении odoo. DEBUG .services ['web.Tour']. Tours.test_type_invisible выдает: не определен

Итак, что происходит? Это происхождение действительно тривиально. Смотрите мой ответ ниже

1 Ответ

0 голосов
/ 10 сентября 2018

То, что здесь происходит, в основном test_legajo.py не может найти legajo.tour.js.Вы должны определить XML-файл, который сообщает odoo, где находится legajo.tour.js:

По соглашению он должен называться «resources.xml», должен быть помещен в папку представлений и должен присутствовать в openerp .py манифест:

folder structure

Когда odoo не может найти js-файл, содержащий туры, он продолжит пробовать готовые фантомы= "odoo. DEBUG .services ['web.Tour']. tours.test_type_invisible", строка до сбоя по тайм-ауту.

...