2017-11-27 1 views
0

Ich möchte die ersten und zweiten Tests nacheinander für jede zurückgegebene Datenmenge ausführen, während ich den ReportFilePath auf eine Variable festlege jedes Mal. Ich konnte es einen Test machen einfach, aber ich denke, das ist zu großC# Nunit - zwei parallele Tests bei der Übergabe von Quelldaten mit Renditerückgaben ausführen

private string reportFilePath; 

[Test] 
[TestCaseSource(typeof(TestData.SwiftReporting), "GenerateDailyLargeExposureReport")] 
[Order(4)] 
public async Task ShouldGenerateDailyLargeExposureReport(int year, int month, int day) 
    { 
     ReportResponseModel dailyLargeExposureReport = new ReportResponseModel(); 

     DateTime date = new DateTime(year, month, day).Date; 
     string formattedDate = date.ToString("d"); 

     dailyLargeExposureReport = await ReportLogic.RequestReport(date, (int)ReportsEnum.DailyLargeExposureReport, null, AuthToken); 
     dailyLargeExposureReport.Should().NotBeNull(); 
     reportFilePath = dailyLargeExposureReport.FilePath; 
    } 


[Test] 
[TestCaseSource(typeof(TestData.SwiftReporting), "DownloadDailyLargeExposureReport")] 
[Order(8)] 
public async Task ShouldDownloadDailyLargeExposureReport(int accountCount) 
    { 
     DailyLargeExposureReportModel outputReport = new DailyLargeExposureReportModel(); 
     outputReport = (DailyLargeExposureReportModel)await ReportLogic.DownloadReport(reportFilePath, ReportsEnum.DailyLargeExposureReport, AuthToken); 

     List<DailyLargeExposureAccountModel> reportAccounts = outputReport.Accounts; 
     reportAccounts.Count().Should().Be(7); 
    } 

Hier sind meine Daten:

public static IEnumerable<TestCaseData> GenerateDailyLargeExposureReport 
    { 
     get 
     { 
      yield return new TestCaseData(2017, 1, 2) 
       .SetName("Generate DLE report for Account1, Jan 2"); 
      yield return new TestCaseData(2017, 1, 3) 
       .SetName("Generate DLE report for Account1, Jan 3"); 
     } 
    } 

public static IEnumerable<TestCaseData> DownloadDailyLargeExposureReport 
    { 
     get 
     { 
      yield return new TestCaseData(3) 
       .SetName("Get data for Account1, Jan 2"); 
      yield return new TestCaseData(5) 
       .SetName("Get data for Account1, Jan 3"); 
     } 
    } 

Also ich beide Tests für den ersten Satz von Daten in jedem IEnumerable ausführen möchten, dann Mach es nochmal mit dem zweiten Set.

Antwort

0

Das ist leider nicht möglich, es sei denn, Sie fügen beiden Methoden [Parallelizable] hinzu. Aber das würde erlauben, dass alle vier Tests parallel laufen, was nicht das ist, was Sie wollen.

Eine Möglichkeit zur Neustrukturierung besteht darin, ein parametrisiertes Fixture zu erstellen, das zwei Tests enthält und TestFixtureSourceAttribute verwendet. Sie könnten die Fixture-Instanzen nicht parallelisierbar machen, so dass sie nicht zusammen laufen, aber die einzelnen Tests parallelisierbar sind, so dass sie dies tun würden.

Verwandte Themen