Как сделать более описательные сообщения журнала ошибок в транспортире (машинопись) - PullRequest
0 голосов
/ 17 октября 2019

Мы работаем с Protractor (написано машинописно) на производственном веб-сайте. Кто-нибудь знает, как выводить некоторые сообщения журнала, когда тест Protractor не проходит? Все, что у меня сейчас есть, это просто сообщение ДА / НЕТ, что-то вроде этого:

10) Query page accuracy test. Comparison of page data to data extracted from excel. Test begins...
  Message:
    Expected false to be truthy.
  Stack:
    Error: Failed expectation
        at C:\xampp\htdocs\kap\frontend\src\app\qa\qa.js:147:103
        at step (C:\xampp\htdocs\kap\frontend\src\app\qa\qa.js:33:23)
        at Object.next (C:\...

и т. Д. это строка, в которой мы тестируем:

expect(htmlValue == excelValue || (htmlValue === "0" && excelValue == "NaN")).toBeTruthy();

Как добавить более описательное сообщение, если тест не пройден? Спасибо, я очень новичок в Protractor, но раньше я проводил тесты автоматизации QA.

Ответы [ 3 ]

1 голос
/ 17 октября 2019

Вы можете добавить описание в ToBeTruthy следующим образом:

expect(htmlValue == excelValue || (htmlValue === "0" && excelValue == "NaN")).toBeTruthy("description why I checked this")

Если хотите, вы можете отобразить ошибочные тестовые значения следующим образом:

expect(
  htmlValue == excelValue || (htmlValue === '0' && excelValue == 'NaN'),
).toBeTruthy(
  `HTML differ form Excel. HTML: ${htmlValue}; Excel: ${excelValue}`,
);

Практически любой жасмин Matchers принимает expectationFailOuput параметр:

toBe(expected: any, expectationFailOutput?: any): Promise<void>;
toEqual(expected: any, expectationFailOutput?: any): Promise<void>;
toMatch(expected: string | RegExp | Promise<string | RegExp>, expectationFailOutput?: any): Promise<void>;
toBeDefined(expectationFailOutput?: any): Promise<void>;
toBeUndefined(expectationFailOutput?: any): Promise<void>;
toBeNull(expectationFailOutput?: any): Promise<void>;
toBeTruthy(expectationFailOutput?: any): Promise<void>;
toBeFalsy(expectationFailOutput?: any): Promise<void>;
toContain(expected: any, expectationFailOutput?: any): Promise<void>;
toBeLessThan(expected: number | Promise<number>, expectationFailOutput?: any): Promise<void>;
toBeLessThanOrEqual(expected: number | Promise<number>, expectationFailOutput?: any): Promise<void>;
toBeGreaterThan(expected: number | Promise<number>, expectationFailOutput?: any): Promise<void>;
toBeGreaterThanOrEqual(expected: number | Promise<number>, expectationFailOutput?: any): Promise<void>;
toBeCloseTo(expected: number | Promise<number>, precision?: any, expectationFailOutput?: any): Promise<void>;

Вы найдете определение Matchers в jasminewd2 депо

0 голосов
/ 18 октября 2019

Хотя предлагаемые решения МОГУТ работать, их не рекомендуется использовать просто потому, что для них требуется больше текста и не читаемый код

Два варианта, ОФИЦИАЛЬНО поддерживаемых средой по умолчанию, а именно Jasmine, таковы:

  1. Для Protractor 6+ вы можете использовать встроенный метод .withContext () К сожалению, для команды Jasmine не предоставлено много документации. Но общий синтаксис expect(true).withContext("your description").toBe(false); и может использоваться против любого утверждения Жасмин, а не только .toBeTruthy()

  2. Для версии Protractor <6 существует недокументированная возможность, когда каждое утверждение принимает два аргумента- первое - ожидаемое значение, второе - сообщение об ошибке. Например, </p>

expect("first value").toBe("second value", "verification of some values")

приводит к ошибке со следующим сообщением

- Expected 'first value' to be 'second value', 'verification of some values'.

0 голосов
/ 17 октября 2019

Вы можете добавить свое пользовательское сообщение почти во всех сопоставлениях с жасмином, например,

expect(true).toBe(true, "This will be shown if the expectation will fail")

expect(htmlValue == excelValue || (htmlValue === "0" && excelValue == "NaN")).toBeTruthy(`Expected ${excelValue}` but got ${htmlValue });
...