8000 Merge branch 'master' of github.com:python012/Solvent · python012/Solvent@d3dc5e3 · GitHub
[go: up one dir, main page]

Skip to content

Commit d3dc5e3

Browse files
committed
Merge branch 'master' of github.com:python012/Solvent
2 parents cbae7cf + 1583bb1 commit d3dc5e3

File tree

9 files changed

+96
-38
lines changed

9 files changed

+96
-38
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Solvent
2+
Hi, this is the project I practice building an Automation testing framework. I mainly use Java, Selenium Webdriver and Junit, and it's a maven project, I'm reading a book about how to build automation testing framework and thanks so much to this book!
3+
4+
Hope I can make it before my baby bores in this summer:)
5+

src/com/solvent/SolventLogger.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import org.apache.log4j.Logger;
99
import org.apache.log4j.PatternLayout;
1010

11+
import com.solvent.util.Configurator;
12+
1113
import java.io.File;
1214
import java.util.UUID;
1315

@@ -18,11 +20,8 @@ public class SolventLogger {
1820

1921
public static final String CONSOLE_APPENDER_NAME = UUID.randomUUID().toString();
2022
public static final String FILE_APPENDER_NAME = UUID.randomUUID().toString();
21-
2223
private static Logger root = LogManager.getRootLogger();
23-
2424
private static boolean configureExternally = root.getAllAppenders().hasMoreElements();
25-
2625
private static String defaultPattern = Configurator.getSolventOutputPattern();
2726
private static String defaultVerbosity = Configurator.getSolventOutputVerbosity();
2827

src/com/solvent/SolventTestCase.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.awt.image.BufferedImage;
1818
import java.io.File;
1919
import java.io.IOException;
20+
import java.io.InputStream;
2021
import java.util.ArrayList;
2122

2223
import javax.imageio.ImageIO;
@@ -25,6 +26,9 @@
2526
import static com.solvent.util.SolventToolkit.silentlySaveScreenshotTo;
2627
import com.solvent.l10nHelper.I18NUtil;
2728
import com.solvent.SolventLogger;
29+
import com.solvent.datasets.InputFileDigester;
30+
import com.solvent.datasets.InputFileFinder;
31+
import com.solvent.datasets.SolventTestDataSet;
2832
import com.solvent.exception.SolventException;
2933

3034
/**
@@ -36,6 +40,8 @@ public abstract class SolventTestCase {
3640
protected static Logger log;
3741
private final File directory = new File("/Users/dir_for_failed_screenshots");
3842
private static ArrayList<SolventStopWatch> timers;
43+
private SolventTestDataSet data;
44+
private static String dataSetOverride;
3945

4046
public SolventTestCase() {
4147
log = SolventLogger.getLogger(this.getClass());
@@ -117,12 +123,36 @@ private boolean checkExists(String id) {
117123
return false;
118124
}
119125

126+
private void initializeDataSet() {
127+
try {
128+
InputStream in = InputFileFinder.getInputFileAsStream(this);
129+
if (in != null) {
130+
log.info("Found test input...digesting file...");
131+
InputFileDigester digester = new InputFileDigester(in);
132+
digester.parseDataSets(getDataSetOverride());
133+
data = digester.getWorkingDataSet();
134+
} else {
135+
log.info("No test input file found");
136+
}
137+
} catch (Exception e) {
138+
log.error("Error while parsing input file..");
139+
}
140+
}
141+
120142
public SolventStopWatch newStopWatch(String id) {
121143
SolventStopWatch timer = new SolventStopWatch(id);
122144
timers.add(timer);
123145
return timer;
124146
}
125147

148+
public static void setDataSetOverride(String dataName) {
149+
dataSetOverride = dataName;
150+
}
151+
152+
public static String getDataSetOverride() {
153+
return dataSetOverride;
154+
}
155+
126156
@Rule
< F438 /code>
127157
public TestRule watcher = new TestWatcher() {
128158
@Override
@@ -139,6 +169,7 @@ public void setupClass() {
139169

140170
@Before
141171
public void setup() {
172+
initializeDataSet();
142173
checkPoints = new ArrayList<CheckPoint>();
143174
start();
144175
}

src/com/solvent/datasets/InputFileDigester.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import com.solvent.SolventLogger;
1414
import com.solvent.SolventTestCase;
15+
import com.solvent.exception.SolventException;
1516

1617
public class InputFileDigester {
1718
private static final Logger log = SolventLogger.getLogger(InputFileDigester.class.getName());
@@ -28,12 +29,12 @@ public InputFileDigester(InputStream in) {
2829
}
2930

3031
public SolventTestDataSet getWorkingDataSet() {
31-
return workingDataset;
32+
return workingDataSet;
3233
}
3334

34-
public ArrayList<SolventTestDataSet> parseDataSets(String suiteDataSetName) {
35+
public ArrayList<SolventTestDataSet> parseDataSets(String suiteDataSetName) throws SolventException {
3536
ArrayList<SolventTestDataSet> dataSetCollection = new ArrayList<SolventTestDataSet>();
36-
Element workingDS = (Element)this.doc.selectSingleNode("/testConfig/workingDataSet");
37+
Element workingDS = (Element) this.doc.selectSingleNode("/testConfig/workingDataSet");
3738
String workingDSName = null;
3839

3940
if (suiteDataSetName != null && suiteDataSetName.trim().length() != 0) {
@@ -44,43 +45,43 @@ public ArrayList<SolventTestDataSet> parseDataSets(String suiteDataSetName) {
4445
}
4546
}
4647
log.debug("========== Working Data Set: " + workingDSName);
47-
48+
4849
if (workingDSName != null) {
4950
SolventTestCase.setDataSetOverride(workingDSName);
50-
Element datasets = (Element)this.doc.selectSingleNode("//dataset");
51-
for (Iterator d=datasets.elementIterator("dataset"); d.hasNext();) {
52-
Element data = (Element)d.next();
51+
Element datasets = (Element) this.doc.selectSingleNode("//dataset");
52+
for (Iterator d = datasets.elementIterator("dataset"); d.hasNext();) {
53+
Element data = (Element) d.next();
5354
String dataSetName = data.attributeValue("name");
5455
SolventTestDataSetBean dataSetBean = new SolventTestDataSetBean(dataSetName);
55-
for (Iterator v = data.elementIterator("var");v.hasNext();) {
56-
Element elem = (Element)v.next();
56+
for (Iterator v = data.elementIterator("var"); v.hasNext();) {
57+
Element elem = (Element) v.next();
5758
dataSetBean.addVar(elem.valueOf("@name"), elem.valueOf("."));
5859
}
59-
for (Iterator f = data.elementIterator("file");v.hasNext();) {
60-
Element elem = (Element)f.next();
60+
for (Iterator f = data.elementIterator("file"); f.hasNext();) {
61+
Element elem = (Element) f.next();
6162
dataSetBean.addVar(elem.valueOf("@name"), elem.valueOf("."));
6263
}
63-
64-
for (Iterator l = data.elementIterator("file");l.hasNext();) {
65-
Element elem = (Element)l.next();
64+
65+
for (Iterator l = data.elementIterator("file"); l.hasNext();) {
66+
Element elem = (Element) l.next();
6667
String listName = elem.attributeValue("name");
6768
ArrayList<String> varList = new ArrayList<String>();
6869
for (Iterator v = elem.elementIterator("var"); v.hasNext();) {
69-
Element listElem = (Element)v.next();
70+
Element listElem = (Element) v.next();
7071
varList.add(listElem.getText());
7172
}
7273
if (varList.size() > 0) {
7374
dataSetBean.addVarList(listName, varList);
7475
} else {
7576
ArrayList<String> fileList = new ArrayList<String>();
76-
for (Iterator f = elem.elementIterator("file");f.hasNext();) {
77-
Element listElem = (Element)f.next();
77+
for (Iterator f = elem.elementIterator("file"); f.hasNext();) {
78+
Element listElem = (Element) f.next();
7879
fileList.add(listElem.getText());
7980
}
8081
dataSetBean.addFiles(listName, fileList);
8182
}
8283
}
83-
84+
8485
SolventTestDataSet dataSet = new SolventTestDataSet(dataSetBean);
8586
dataSetCollection.add(dataSet);
8687
if (dataSetName.equals(workingDSName)) {
@@ -89,8 +90,7 @@ public ArrayList<SolventTestDataSet> parseDataSets(String suiteDataSetName) {
8990
throw new SolventException("No Data Set defined!");
9091
}
9192
}
92-
return dataSetCollection;
9393
}
94+
return dataSetCollection;
9495
}
9596
}
96-

src/com/solvent/datasets/SolventTestDataSet.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.solvent.exception.InvalidFileException;
88

99
public class SolventTestDataSet {
10+
1011
private SolventTestDataSetBean myBean;
1112

1213
public SolventTestDataSet(SolventTestDataSetBean bean) {
@@ -25,14 +26,6 @@ public String getVariable(String varName) {
2526
return varValue;
2627
}
2728

28-
public ArrayList<String> getVariables(String listName) {
29-
ArrayList<String> vars = myBean.getVarValues(listName);
30-
if (null == vars) {
31-
throw new InvalidParameterException("Input variables list \"" + listName + "\" not found");
32-
}
33-
return vars;
34-
}
35-
3629
public File getFile(String fileName) throws InvalidFileException {
3730
String filePath = myBean.getFile(fileName);
3831
if (null == filePath) {
@@ -44,11 +37,11 @@ public File getFile(String fileName) throws InvalidFileExce F438 ption {
4437
}
4538
return file;
4639
}
47-
40+
4841
public ArrayList<File> getFiles(String listName) throws InvalidFileException {
4942
ArrayList<String> filePaths = myBean.getFiles(listName);
5043
if (null == filePaths) {
51-
throw new InvalidParameterException("Input list variables \"" + listName + "\" not found");
44+
throw new InvalidParameterException("Input list variable \"" + listName + "\" not found");
5245
}
5346
ArrayList<File> files = new ArrayList<File>();
5447
for (String filePath : filePaths) {

src/com/solvent/datasets/SolventTestDataSetBean.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55

66
public class SolventTestDataSetBean {
77
private Hashtable<String, String> myVars = new Hashtable<String, String>();
8-
private Hashtable<String, ArrayList<String>> myVarLists =
9-
new Hashtable<String, ArrayList<String>>();
8+
private Hashtable<String, ArrayList<String>> myVarLists = new Hashtable<String, ArrayList<String>>();
109
private Hashtable<String, String> myFiles = new Hashtable<String, String>();
11-
private Hashtable<String, ArrayList<String>> myFileLists =
12-
new Hashtable<String, ArrayList<String>>();
10+
private Hashtable<String, ArrayList<String>> myFileLists = new Hashtable<String, ArrayList<String>>();
1311
private String name;
1412

1513
public SolventTestDataSetBean(String name) {
16-
this.name = name; // this name is the name of some <dataset> in the XML file
14+
this.name = name; // this name is the name of some <dataset> in the XML
15+
// file
1716
}
1817

1918
public void addVar(String varName, String varValue) {

src/com/solvent/datasets/TestCase.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<testConfig>
3+
<workingDataSet name="active" />
4+
<datasets>
5+
<dataset name="active">
6+
<var name="userName">admin</var>
7+
<var name="userPassword">admin</var>
8+
</dataset>
9+
<dataset name="dataDriven">
10+
<var name="userName">admin</var>
11+
<list name="password">
12+
<var>admin</var>
13+
<var>solvent</var>
14+
<var>testlink1</var>
15+
<var>testlink2</var>
16+
<var></var>
17+
</list>
18+
</dataset>
19+
</datasets>
20+
</testConfig>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.solvent.exception;
2+
3+
import java.io.IOException;
4+
5+
public class ConfigurationError extends Exception {
6+
7+
public ConfigurationError(String message, IOException e) {
8+
super(message, e);
9+
}
10+
}

src/com/solvent/util/Configurator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.apache.log4j.Logger;
1111

1212
import com.solvent.SolventLogger;
13+
import com.solvent.exception.ConfigurationError;
1314

1415
public class Configurator {
1516
public static final String DEFAULT_PROPERTIES_RESOURCE = "/com/solvent/conf/solvent-defaults.properties";

0 commit comments

Comments
 (0)
0