How can I retrieve the current test's name wit

2019-02-21 09:38发布

问题:

For additional logging, I need to be able to print the current test's description.

How can I do this (with Mocha BDD)?

回答1:

Here you go:

console.log(this.title);


回答2:

If you are directly inside a callback to describe, you can use this.title for the title of the describe or this.fullTitle() to get the hierarchical title of the describe (ancestors' titles + the title of this one). If you are inside a callback to it you can use this.test.title or this.test.fullTitle() respectively. So:

describe("top", function() {
    console.log(this.title);
    console.log(this.fullTitle());

    it("test", function () {
        console.log(this.test.title);
        console.log(this.test.fullTitle());
    });
});

The console.log statements above will output:

top
top
test
top test

Here's a fuller example that shows how the titles change depending on nesting:

function dump () {
    console.log("running: (fullTitle)", this.test.fullTitle(), "(title)",
                this.test.title);
}

function directDump() {
    console.log("running (direct): (fullTitle)", this.fullTitle(), "(title)",
                this.title);
}

describe("top", function () {
    directDump.call(this);
    it("test 1", dump);
    it("test 2", dump);
    describe("level 1", function () {
        directDump.call(this);
        it("test 1", dump);
        it("test 2", dump);
    });
});

The console.log statements will output:

running (direct): (fullTitle) top (title) top
running (direct): (fullTitle) top level 1 (title) level 1
running: (fullTitle) top test 1 (title) test 1
running: (fullTitle) top test 2 (title) test 2
running: (fullTitle) top level 1 test 1 (title) test 1
running: (fullTitle) top level 1 test 2 (title) test 2


回答3:

From within a beforeEach, try this.currentTest.title.

Example:

beforeEach(function(){
  console.log(this.currentTest.title); 
})

Using Mocha 3.4.1.



回答4:

Inside any test method

it('test method name'), function()  { var testName= this.test.title; }

and you may use :

afterEach(function(){
    console.log(this.currentTest.title); //displays test title for each test method      
});