As I mentioned in my previous post that now its time to refactor our tests a little bit so that each test is written with proper test structure as required. After refactoring tests we will add one more test to our framework with proper test structure.
So, lets do it now.
And

Let's refactor these tests first before adding more tests to this framework. In each method let's log some message so that we come to know how the execution was done.
# AssemblyInitialize method:
In this method let's put code to initialize the log so that it can be used throughout the assembly.

Before moving to next method let's talk about other refactoring made in this test project.
#1: All static classes are made non-static so that we can created instances of page objects instead of directly using them. So, now on we cannot use class directly. Instead we will first create instance of object and then use that instance whenever needed. e.g. below is the snapshot of LoginPage class:
Created a constructor of this class in which we can set the browser instance to be used in this class. When this LoginPage class is instantiated, we will pass browser instance as parameter which will be set here. Hence during a particular execution we will make sure that the same browser is being used.
Like this all the classes are refactored to be non-static.
#2 All static methods are made non-static. See above for example.
#3 In test class, created objects of all classes which we need in this class. This is to be remembered that we have to create objects for all classes which are going to use in tests methods or in other methods so that these could be available whenever needed.

E.g. in above snapshot you can see that I have created objects for Browser, LoginPage and HomePage classes as I would need these during my tests.
#4 A new method created in each test class e.g. Initialize(). This method contains code to instantiate above
E.g. in above screenshot you can see that I have instantiated all the objects. Further there is one more line i.e.
" browser.Initialize();" This basically calls the "Initialize()" method of browser which in turn creates a new instance of browser. In this case case it creates a FireFox driver instance. Make sure that we call this before we create instances of other page objects as this particular browser instance will be used by all the classes to make sure that all works on same instance.
# ClassInitialize method:
In this method let's put the code to call method which instantiates different objects i.e. "Initialize()" method.
So, lets do it now.
Refactoring tests
Till now we have added two tests to our framework i.e.And
Let's refactor these tests first before adding more tests to this framework. In each method let's log some message so that we come to know how the execution was done.
# AssemblyInitialize method:
In this method let's put code to initialize the log so that it can be used throughout the assembly.
Before moving to next method let's talk about other refactoring made in this test project.
#1: All static classes are made non-static so that we can created instances of page objects instead of directly using them. So, now on we cannot use class directly. Instead we will first create instance of object and then use that instance whenever needed. e.g. below is the snapshot of LoginPage class:
Created a constructor of this class in which we can set the browser instance to be used in this class. When this LoginPage class is instantiated, we will pass browser instance as parameter which will be set here. Hence during a particular execution we will make sure that the same browser is being used.
Like this all the classes are refactored to be non-static.
#2 All static methods are made non-static. See above for example.
#3 In test class, created objects of all classes which we need in this class. This is to be remembered that we have to create objects for all classes which are going to use in tests methods or in other methods so that these could be available whenever needed.
E.g. in above snapshot you can see that I have created objects for Browser, LoginPage and HomePage classes as I would need these during my tests.
#4 A new method created in each test class e.g. Initialize(). This method contains code to instantiate above
E.g. in above screenshot you can see that I have instantiated all the objects. Further there is one more line i.e.
" browser.Initialize();" This basically calls the "Initialize()" method of browser which in turn creates a new instance of browser. In this case case it creates a FireFox driver instance. Make sure that we call this before we create instances of other page objects as this particular browser instance will be used by all the classes to make sure that all works on same instance.
# ClassInitialize method:
In this method let's put the code to call method which instantiates different objects i.e. "Initialize()" method.
# ClassCleanup method:
In this method let's put code to close browser after all tests in this class are executed. This is important to close the the browser instance after execution is completed as otherwise you will be having an unnecessary browser instance open after each execution.
# TestInitialize method:
Let's just keep this method empty as we don't have anything to put here. But as I mentioned earlier, we can put here code that we want to execute before every test. e.g. it can be think of as pre-conditions that you want to execute before execution of each test.
# TestCleanup method
Let's just keep this method empty too as we don't have anything to put here. But as I mentioned earlier, we can put here code that we want to execute after every test execution.E.g. it can be think of like if you want something to happen after each test execution, you can put that code here.
# TestMethod
We already know about this method. But still I am including this method here as there are few refactoring done in this method too. Let's see one of the method:
Here if you notice that I have used object instances rather than class names as how it was earlier due the fact we had static classes in use.
Let's see the out put for execution of one the test method e.g. second one.
As you can see in above output snapshot that how the execution was done. First assembly initialize method was executed then class initialize then test initialize then test method. After execution of all steps in test method first test cleanup method was executed and then the class cleanup method was executed finally.
This is it. Let's not make this post bigger. I will be creating a new post for adding new test with complete test structure. As now from this post it should be clear to you that how each method should work and when actually we need to use these and for what purpose we use these.
Thanks for reading this post. See you in next post. Cya.
Comments
Post a Comment