Sai*_*fur 5 c# sql sql-server selenium coded-ui-tests
我正在尝试为UI测试自动化执行以下操作:
[SetUp]
public void TestSetUp()
{
_scope = new TransactionScope();
}
[TearDown]
public void TearDown()
{
_scope.Dispose();
}
[Test]
public void SomeTest()
{
Utilities.SomeDeleteTransaction(companyCode);
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行一个Update查询并在[Test]中执行一些操作,并在测试后运行的[TearDown]中执行UI和回滚事务.我不确定我做得对.但是,我正在尝试(可能提交)该事务,以便我可以看到它对UI的影响和回滚相同的事务,所以我的数据库保持不变.我可以使用TransactionScope或其他类来实现吗?
编辑
这个问题主要是处理数据库已知的硒测试状态.由于我的数据库每月从生产中删除,我希望能够在测试之前执行一些insert/update/delete sql脚本来修改db,然后使用Selenium进行一些UI测试,然后在Teardown中回滚(测试是使用NUnit编写的) )确保db对测试没有任何影响,并在测试后保持相同.
数据库快照!
/* Create a database snapshot */
USE master;
CREATE DATABASE Your_Database_Snapshot ON
(
NAME = Your_Database,
FILENAME = 'C:\Snapshots\Your_Database_Snapshot.ss'
)
AS SNAPSHOT OF Your_Database;
GO
Run Code Online (Sandbox Code Playgroud)
USE master;
RESTORE DATABASE Your_Database from
DATABASE_SNAPSHOT = 'Your_Database_Snapshot';
GO
Run Code Online (Sandbox Code Playgroud)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.IO;
using System.Data.SqlClient;
[SetUp]
public void TestSetUp()
{
string sqlConnectionString = @"server=test.database.com;uid=your_db_username;pwd=your_db_password;database=Your_Database;";
string script = File.ReadAllText(@"~/create_db_snapshot.sql");
SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
}
[TearDown]
public void TearDown()
{
string sqlConnectionString = @"server=test.database.com;uid=your_db_username;pwd=your_db_password;database=Your_Database;";
string script = File.ReadAllText(@"~/restore_db_from_snapshot.sql");
SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
}
Run Code Online (Sandbox Code Playgroud)
快照文档:https://msdn.microsoft.com/en-us/library/ms175158.aspx
执行.sql文件的代码信用:https://stackoverflow.com/a/1728859/3038677
/* Kill all current connections to Your_Database */
use master;
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'
FROM master..sysprocesses
WHERE dbid = db_id('Your_Database')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |